Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197

delete[]

18.07.2013, 16:37. Показов 3915. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста как заставить это работать?
Вылетает на строчке delete[].
Выделяю ведь память с помощью оператора new.
А в идеале нужно сделать так чтобы была отдельная ф-я типа:

C++
1
2
3
4
void deleteStr()
{
delete[] string;
}
подскажите пожалуйста и я наконец-то разберусь с этой темой)
Вот исходный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# include <iostream>
using namespace std;
 
class mString
{
private:
    char* string;
public:
    mString(char* string_)
    {
        int lenght_ = strlen(string_);
        string = new char[lenght_];
        string[lenght_] = '\0';
 
        for (int i = 0; i < lenght_; i++)
            string[i] = string_[i];
 
        delete [] string;
    }
};
 
int main(void)
{
    mString("12.34");
    system("pause");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2013, 16:37
Ответы с готовыми решениями:

Используя delete по указателю, возвращенному new [] или delete [] указателем, возвращаемым new
Помогите ответить на вопрос, не могу понять суть вопроса (правильно ли понимаю, что будет если выделить память в куче и затем не удалить...

Какая разница между delete и delete[]
Нашел информацию на разных сайтах и всё равно остались вопросы. Я понимаю, что delete используется для удаления одиночных объектов и...

В чем разница между delete и delete[]?
а можете еще по подробней рассказать про delete, точнее даже delete, чем именно отличается delete от delete, т.к. я попробовал...

28
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
18.07.2013, 16:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от PakistanCode Посмотреть сообщение
Только проблема в том, что мне постоянно нужно будет удалять и выделять память.
если тебе постоянно нужно выделять и удалять память тем более под строку
может проще воспользоваться типом string?
1
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
18.07.2013, 16:58  [ТС]
ValeryS, проблема в том что:
Миниатюры
delete[]  
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
18.07.2013, 16:58
Цитата Сообщение от PakistanCode Посмотреть сообщение
~mString()
{
if (string) delete [] string;
}
лишнее это
можно так
C++
1
delete [] string;
для нулевого указателя delete ничего не делает
Цитата Сообщение от PakistanCode Посмотреть сообщение
delete [] string;
string = 0;
для указателей лучше использовать NULL и самому понятнее и другим
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
18.07.2013, 17:11
ValeryS,
C++
1
2
string = 0;
delete [] string;
Сработает нормально, серьезно? Никаких исключений?
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
18.07.2013, 17:15
Цитата Сообщение от nexen Посмотреть сообщение
Сработает нормально, серьезно? Никаких исключений?
Серьезно
Цитата Сообщение от 5.3.5
In the second alternative (delete array), the value of the operand of delete may be a null pointer value or a pointer value that resulted from a previous array new-expression.If not, the behavior is undefined.
1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
18.07.2013, 17:20
Цитата Сообщение от nexen Посмотреть сообщение
Сработает нормально, серьезно?
не ненормально утечка будет
а вот такое сработает

C++
1
2
3
delete [] string;
string = NULL;
delete [] string;
ты с free, то не путай
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.07.2013, 18:44
Цитата Сообщение от ValeryS Посмотреть сообщение
ты с free, то не путай
а что free ведет себя как-то иначе?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
18.07.2013, 19:09
Цитата Сообщение от Tulosba Посмотреть сообщение
а что free ведет себя как-то иначе?
та ххто его знает
я с нем толком не работал, но в книжках говорят проверять указатель
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
18.07.2013, 19:15
Цитата Сообщение от ValeryS Посмотреть сообщение
та ххто его знает
я с нем толком не работал, но в книжках говорят проверять указатель
Не надо проверять, free(NULL) ничего не делает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2013, 19:15

Чем отличается delete[] от delete?
чем отличается? delete mas от delete mas

Delete или delete []
Здравствуйте. Написал программу которая создает динамический массив, заполняемый нулями и выводит адреса всех элементов на разных этапах...

delete[] *pointer vs. delete pointer и утечка памяти
Здравствуйте! Есть класс &quot;умного&quot; указателя counted_ptr, который удаляет хранящийся в нём T* owned; только если кол-во владельцев...

"delete [] a, b;" эквивалентно "delete [] a; delete [] b;"?
Я правильно понимаю, что &quot;delete a, b;&quot; эквивалентно &quot;delete a; delete b;&quot; ?

new и delete
как лучше очищать память? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; //как лучще очищать память? int main(){ char *buff...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит следующие. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru