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

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

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

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

30.01.2010, 19:21. Просмотров 750. Ответов 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.
Большая просьба помогите!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2010, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при использовании delete (C++):

Ошибка при использовании new[] / delete[] - C++
Здравствуйте. Пишу учебную программу, моделирующую движение лифта (если кто учебник Дейтелов читал, тот поймет :) ). Для начала приведу...

Ошибка при использовании оператора 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...

2
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.01.2010, 19:26 #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;
}
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
30.01.2010, 19:37 #3
Doxtar.Voodoo,

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

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

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

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

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

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

2. Использовать C++ и std::string
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2010, 19:37
Привет! Вот еще темы с ответами:

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

Ошибка при использовании gets() - C++
Не могу понять, почему при второй итерации цикла программа выдает ошибку и закрывается при запросе фамилии. #include "stdafx.h" ...

Ошибка при использовании % - C++
(условие задачи, код и ошибки при коомпиляции на скрине) Здравствуйте, задача простая, как и ее решение, на фортране бы уже пять раз...

Ошибка при использовании override - C++
Здравствуйте, форумчане, столкнулся с проблемой при использовании override: есть абстрактный класс с чистой виртуальной функцией move,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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