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

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

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

delete[] - C++

18.07.2013, 16:37. Просмотров 975. Ответов 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[]
Посмотрите здесь:

C++ new delete
C++ delete this
C++ В чем разница между delete и delete[]?
"delete [] a, b;" эквивалентно "delete [] a; delete [] b;"? C++
Чем отличается delete[] от delete? C++
new - delete C++
C++ new и delete
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,300
18.07.2013, 16:55     delete[] #21
Цитата Сообщение от PakistanCode Посмотреть сообщение
Только проблема в том, что мне постоянно нужно будет удалять и выделять память.
если тебе постоянно нужно выделять и удалять память тем более под строку
может проще воспользоваться типом string?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PakistanCode
2 / 2 / 0
Регистрация: 05.02.2013
Сообщений: 175
18.07.2013, 16:58  [ТС]     delete[] #22
ValeryS, проблема в том что:
Миниатюры
delete[]  
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,300
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Эксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,466
Записей в блоге: 2
Завершенные тесты: 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
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,300
18.07.2013, 17:20     delete[] #26
Цитата Сообщение от nexen Посмотреть сообщение
Сработает нормально, серьезно?
не ненормально утечка будет
а вот такое сработает

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

C++ delete this
C++ new[] - delete[]
delete[] *pointer vs. delete pointer и утечка памяти C++
New/Delete C++
New delete C++

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

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

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