Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
05.04.2011, 18:49

_BLOCK_TYPE_IS_VALID при вызове деструктора класса - C++

05.04.2011, 18:49. Просмотров 2530. Ответов 11
Метки (Все метки)

У вас есть указатель name. Вы выделяете для него память: name = new char [20];. Теперь он указывает на некоторую область памяти, выделенную в куче. На следующей строчке вы неявно создаёте константную строку "name" (в стеке) и тут же присваиваете адрес этой строки указателю name. Таким образом, ваша память, выделенная строкой раньше, теряется (она выделена, но адрес её безвозвратно потерян), а name теперь указывает на выделенную в стековой памяти константную строку. Затем, в деструкторе, вы пытаетесь применить delete к name. Но name указывает на область автоматической памяти (выделенной в стеке, объекты в которой автоматически удаляются по истечении времени жизни), и применять к этой памяти delete ни в коем случае нельзя, о чём и говорит выскочившее сообщение. Строку name = "name"; следует заменить на strcpy(name, "name"), в этом случае вы измените не просто указатель, а данные, на которые он указывает.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2011, 18:49
Темы с ответами и решениями для C++ _BLOCK_TYPE_IS_VALID при вызове деструктора класса:

Ошибка при вызове деструктора
Добрый вечер! Почему при вызове деструктора вылетает ошибка после компиляции...

Программа выдаёт ошибку при вызове деструктора
Здравствуйте! Есть два шаблона: 1) шаблон двухсвязного списка 2) шаблон...

Почему при вызове деструктора класс как бы существует?
Создал класс,создал объект,в нем поля имеющие значения,вызвал...

Очередное деструктивное: при вызове деструктора все падает
Доброго времени суток! Есть некий класс H, с конструктором, деструктором: ...

0
_BLOCK_TYPE_IS_VALID при вызове деструктора класса C++   Следующее сообщение темы 
Другие темы раздела
C++ Файловые потоки http://www.cyberforum.ru/cpp-beginners/thread270611.html
Компилятор ругается при создании экземпляра класса ofstream. Среда разработки - Visual C++ 2008. Выдает error C2079: 'fileout' uses undefined class 'std::basic_ofstream<_Elem,_Traits>' В чем тут...
C++ Функции на С: в последовательностях все члены, следующие за членом с наибольшим значением, заменить на 0,5 Даны действительные числа a1, …, an, b1, …, bm. В последовательности a1, …, an и в последовательности b1, …, bm все члены, следующие за членом с наибольшим значением (за первым по порядку, если их... http://www.cyberforum.ru/cpp-beginners/thread270607.html
Обработка символьных данный C++
Добрый день у меня проблема с задачей не могу сообразить как ее делать . Задача: В строке , введенной пользователем изменить порядок слов на обратный .
C++ ошибки или всё не правильно.
вводится текст.разбивается на слова.....и если слова не одинаковы то выводятся..... ничего не получается(помогите пожалуйста.... #include "stdafx.h" #include <iostream> #include <conio.h>...
C++ Разность двумерных массивов http://www.cyberforum.ru/cpp-beginners/thread270599.html
Добрый день! Недавно я начал изучать С++, а до этого писал на делфи! Задали мне написать функцию, которая должна на входу принимать размерность массивов(l, m) и два двумерных массива (a, b) Нужно...
C++ Нужно исправить ошибку в коде! Вот задание: Создать приложение для вычисления значения арифметического выражения, которое может включать в себя действительные числа, а также круглые скобки и следующие операции: +, -, *, /, ^... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru