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

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

Войти
Регистрация
Восстановить пароль
 
Doxtar.Voodoo
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 9
#1

Ошибка при использовании delete - C++

30.01.2010, 19:21. Просмотров 735. Ответов 2
Метки нет (Все метки)

И снова здравствуйте!
Пишу раз третий.Я уже готов убицца ап сцену изза этого delete.Я не понимаю что не так делаю:
C++
1
2
3
4
5
6
7
8
9
10
11
class CMenu
{
    char* Title;
    char* End;
public:
    CMenu(char*, char* );
    ~CMenu();
 
    char* showTitle();
    char* showEnd();
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CMenu::CMenu(char* title, char* end)
{
    Title = title;
    title = 0;
 
    End = end;
    end = 0;
}
 
CMenu::~CMenu()
{
    delete[]Title;
        Title = 0;
    delete[]End;
        End = 0;
}
Пишет что я хочу написать что-то за пределами "кучи".типа application wrote to memory after the end of heap buffer.
Большая просьба помогите!!!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2010, 19:21     Ошибка при использовании delete
Посмотрите здесь:

Ошибка при использовании оператора delete в Visual Studio 2010 - C++
Изучаю указатели в C++. Есть следующий код: #include <iostream> #include <locale> using namespace std; int main() { ...

Утечки памяти при использовании new/delete для двумерных массивов - C++
Добрый день. Суть в том, что есть несколько функций, получающих на вход и возвращающих двумерные массивы. Реализация передачи массивов...

Ошибка при освобождении памяти (delete) - C++
Здравствуйте! Есть массив lines, созданный вот так : int *line = new int ; Потом, пытаюсь его удалить и пересоздать : delete...

Ошибка при удалении массива с помощью delete - C++
Изучаю C++ и у меня задание разбить текст неопределенной длинны на массив строк. Нацарапал класс типа string ниже выложу. В него задача...

Помогите пож-та, ошибка при работе delete - C++
enum place { first = 1, second }; class Passanger { public: Passanger(); void Call(); void PushButton(); int...

Ошибка с delete при удалении памяти из-под строки - C++
strngbad.h // strngbad.h -- flawed string class definition #include <iostream> #ifndef STRNGBAD_H_ #define STRNGBAD_H_ class...

Ошибка при использовании вектора - C++
Пытаюсь проанализировать текстовый файл и посчитать кол-во каждого символа. Текст на английском. Вот код: class Raspredelenie{ ...

Ошибка при использовании size_t - C++
Выдает много ошибок связанные с использованием typedef std::size_t size_type; #include <iostream> #include <cstring> #include...

Ошибка в выводе при использовании циклов for - C++
Всем привет! double amount; // сумма на счёте в конце года double principal = 24.00; // исходная сумма double rate; ...

Ошибка C2678 при использовании set_intersection - C++
Необходимо из двух multiset вывести совпадающие строки Написал такой код, но выдает ошибку #include "stdafx.h" #include <vector> ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.01.2010, 19:26     Ошибка при использовании delete #2
Цитата Сообщение от Doxtar.Voodoo Посмотреть сообщение
C++
1
2
3
4
5
6
7
CMenu::~CMenu()
{
 delete[]Title;
 Title = 0;
 delete[]End;
 End = 0;
}
delete[] освобождает память для массивов, delete освобождает память для обычных переменных.
К тому же ты после delete пытаешься приравнять переменную к нулю.

C++
1
2
3
4
5
6
7
CMenu::~CMenu()
{
 Title = 0;
 delete Title;
 End = 0;
 delete End;
}
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
30.01.2010, 19:37     Ошибка при использовании delete #3
Doxtar.Voodoo,

А теперь - правильный ответ (:

ты пытаешься освободить не принадлежащую тебе память.
потому что свой класс можно создать и так:

CMenu zzz("ы-ы-ы-ы", "у-у-у-у");

и тогда всё, приплыли.

1. кривой способ:
использовать strdup и free
Title = strdup(titile);
...
free(Title);

судя по вопросам и представленному коду, способ для тебя не рекомендован.

2. Использовать C++ и std::string
Ответ Создать тему
Опции темы

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