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

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

Восстановить пароль Регистрация
 
Doxtar.Voodoo
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 9
30.01.2010, 19:21     ошибка при использовании delete #1
И снова здравствуйте!
Пишу раз третий.Я уже готов убицца ап сцену изза этого 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 C++
C++ Ошибка при использовании оператора delete в Visual Studio 2010
HELP! Ошибка при выполнении оператора delete[] C++
C++ Ошибка при удалении массива с помощью delete
Ошибка при использовании new[] / delete[] C++
C++ Ошибка при освобождении памяти (delete)
C++ Утечки памяти при использовании new/delete для двумерных массивов
C++ Ошибка при использовании %

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 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
Yandex
Объявления
30.01.2010, 19:37     ошибка при использовании delete
Ответ Создать тему
Опции темы

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