Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
PakistanCode
2 / 2 / 0
Регистрация: 05.02.2013
Сообщений: 177
#1

delete[] - C++

18.07.2013, 16:37. Просмотров 1061. Ответов 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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2013, 16:37     delete[]
Посмотрите здесь:

delete[] - C++
Здравствуйте! Имеется след. код: char* values = new char; values = '\0'; ////ещё код//// delete values; Вопрос - почему...

new - delete - C++
Добрый день. Выделяю память для записи 10 значений координат точки. #include &lt;iostream&gt; using namespace std; class point { ...

new и delete - C++
Ошибка, незнаю как для моего класса выделить память. Как исправить? class MyClass { int a, b, c; public: MyClass(int a,...

delete this - C++
Добрый день! У меня возник такой вопрос - почему в программе возникает неопределённое поведение для объекта, в деструкторе которого...

new delete - C++
здраствуйте! назрел вопрос class cls1 { ... ... } class cls2 { ... cls1 *pt = new cls1();

delete this - C++
Какие последствия могут быть при выполнении команды delete this; из какой-нибудь функции члена?

New/Delete - C++
нужно рассмотреть конкретную ситуацию: область, выделенная желтым цветом будет очищена, при использовании delete, область выделенная...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
18.07.2013, 16:55     delete[] #21
Цитата Сообщение от PakistanCode Посмотреть сообщение
Только проблема в том, что мне постоянно нужно будет удалять и выделять память.
если тебе постоянно нужно выделять и удалять память тем более под строку
может проще воспользоваться типом string?
PakistanCode
2 / 2 / 0
Регистрация: 05.02.2013
Сообщений: 177
18.07.2013, 16:58  [ТС]     delete[] #22
ValeryS, проблема в том что:
Миниатюры
delete[]  
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
18.07.2013, 16:58     delete[] #23
Цитата Сообщение от PakistanCode Посмотреть сообщение
~mString()
{
if (string) delete [] string;
}
лишнее это
можно так
C++
1
delete [] string;
для нулевого указателя delete ничего не делает
Цитата Сообщение от PakistanCode Посмотреть сообщение
delete [] string;
string = 0;
для указателей лучше использовать NULL и самому понятнее и другим
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
18.07.2013, 17:11     delete[] #24
ValeryS,
C++
1
2
string = 0;
delete [] string;
Сработает нормально, серьезно? Никаких исключений?
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
18.07.2013, 17:15     delete[] #25
Цитата Сообщение от 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.
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
18.07.2013, 17:20     delete[] #26
Цитата Сообщение от nexen Посмотреть сообщение
Сработает нормально, серьезно?
не ненормально утечка будет
а вот такое сработает

C++
1
2
3
delete [] string;
string = NULL;
delete [] string;
ты с free, то не путай
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
18.07.2013, 18:44     delete[] #27
Цитата Сообщение от ValeryS Посмотреть сообщение
ты с free, то не путай
а что free ведет себя как-то иначе?
ValeryS
Модератор
6539 / 5005 / 461
Регистрация: 14.02.2011
Сообщений: 16,648
18.07.2013, 19:09     delete[] #28
Цитата Сообщение от Tulosba Посмотреть сообщение
а что free ведет себя как-то иначе?
та ххто его знает
я с нем толком не работал, но в книжках говорят проверять указатель
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2013, 19:15     delete[]
Еще ссылки по теме:

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

New delete - C++
написал код ну там в блоке перегрузки оператора добавил new void operator=(char* t) { int tl=strlen(t); a=new char; ...

new[] - delete[] - C++
Всем привет. Глупый вопрос, но тем не менее, он меня крайне заинтересовал. Вот например, есть такой код: void main() { int...

Операции new и delete - C++
Привет всем! У меня вопрос по указателям. Вот я создал массив указателей. Через new я каждому присвоил значение 0. int* ptr; for...

Указатели и delete - C++
Добрый вечер! Возникла проблема с delete, почему-то при удаление объекта он не заходит не в один деструктор. Хотелось, чтобы Вы помогли, а...


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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
18.07.2013, 19:15     delete[] #29
Цитата Сообщение от ValeryS Посмотреть сообщение
та ххто его знает
я с нем толком не работал, но в книжках говорят проверять указатель
Не надо проверять, free(NULL) ничего не делает.
Yandex
Объявления
18.07.2013, 19:15     delete[]
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru