Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392

Освободить память и записать по новой

25.11.2013, 23:04. Показов 783. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив:
C++
1
char Name[25];
нужно выполнить проверку ввода данных и при надобности освободить память и записать в массив новое значение
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Country::setName(void){
    if(Name!=NULL){
        char *Name = new char[];
        delete[] Name;
    }
    else{
        Name[25] = *new char[strlen(Name)+1];
        strcpy_s(Name, Name);
    }
    cout<<"Введите новое название страны: ";
    cin>>Name;
}
скажите, я правильно делаю?

Добавлено через 6 часов 3 минуты
может хоть кто то сказать? просто "да" или "нет"?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2013, 23:04
Ответы с готовыми решениями:

Как освободить старые ImageVew чтобы освободить память
Привет всем Я новичок поэтому прошу сильно не пинать. В общем мое первое приложение типа интернет магазин. Одно окно в котором...

Освободить память
Вот к примеру, прога обрабатывает строки в txt. Как сделать чтобы те txt которые она уже обработала, как бы не нагружали озу ?

Освободить память C++
Доброго времени суток, помогите пожалуйста. Вопрос вот в чем, если у меня функция в которой Vector - это мой созданный класс. ...

6
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
25.11.2013, 23:18
Кривовато у вас как-то все..
C++
1
2
3
4
if(Name!=NULL){
        char *Name = new char[];
        delete[] Name;
    }
Здесь, если Name указывает на строку, вы сразу выделяете память под новую строку и тут же ее удаляете. Нелогично как-то. Это во первых. Далее, указатель на старую строку при этом теряется, так как затирается указателем на новую строку, и освободить память вы при этом уже никак не сможете. В третьих,
C++
1
new char[];
так писать нельзя, да и компилятор это запретит, так как он должен знать, под какого размера массив выделять память. В четвертых, непонятно назначение этой строки
C++
1
Name[25] = *new char[strlen(Name)+1];
которая выполняется при условии, что указатель на строку пустой, т.е. равен NULL. А вы еще пытаетесь вычислить длину строки, на которую указывает этот указатель, а при этом указатель в принципе никуда не указывает.
И последнее,
C++
1
strcpy_s(Name, Name);
копирование строки в саму себя. Идея, в принципе, интересная, но смысловой нагрузки опять же никакой не несет
1
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
25.11.2013, 23:44  [ТС]
ViktorKozlov, скажите пожалуйста, как я должен освободить память при неправильном вводе данных чтобы заполнить массив новым значением?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.11.2013, 07:12
Цитата Сообщение от Кротяка Посмотреть сообщение
Есть массив: Код C++1
char Name[25];
Если массив такой (не динамически созданный), то специально освобождать ничего не нужно. При чтении новой строки в массив, старое содержимое удалится.
0
 Аватар для Кротяка
7 / 7 / 1
Регистрация: 20.12.2010
Сообщений: 392
27.11.2013, 05:09  [ТС]
alsav22, препод требует, ничего не поделаешь

Добавлено через 5 часов 21 минуту
немножко переделал
C++
1
2
3
4
5
6
7
8
    char *Nazvanie = new char[*Name];
    Name[25] = *new char[strlen(Nazvanie)+1];
    if(Name!=NULL){
        cout<<"Введите новое название страны: ";
        cin>>Nazvanie;
        strcpy_s(this->Name, Nazvanie);
        delete[] Nazvanie;
    }
так правильно, скажите?
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
27.11.2013, 05:27
Цитата Сообщение от Кротяка Посмотреть сообщение
нужно выполнить проверку ввода данных и при надобности
Хоть напишите что такое выполнить проверку ввода данных
Угадал-неугадал что-ли ?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.11.2013, 09:26
Цитата Сообщение от Кротяка Посмотреть сообщение
alsav22, препод требует, ничего не поделаешь
Что требует? Освобождать память под статически созданным массивом?

Добавлено через 2 минуты
Цитата Сообщение от Кротяка Посмотреть сообщение
так правильно, скажите?
Компилятор не спрашивали?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2013, 09:26
Помогаю со студенческими работами здесь

Освободить память от потока
WaveStream ws = new Mp3FileReader(path); WaveOut wo = new WaveOut(); wo.Init(ws); ...

Как освободить память?
подскажите как правильно освободить память,спасибо заранее))) #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Освободить память в стуктуре
Не могу четко освободить память. Где косяк и как ее правильно освободить? Сообщение Valgrind Valgrind options: --12260-- ...

Освободить незадействованную память
у меня создается список под каждый элемент выделяю память,потом с этим списком происходят операции и элементов становится меньше, как...

Не получается освободить память
Здравствуйте, такая загвоздка, начал изучать указатели и создание динамических массивов, проблема в том что не выходит очистить память в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru