|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.06.2011, 01:04 | #1 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Нужно удалить указатель на массив - на строке с delete вылетает Debug Error.
Привет всем в очередной раз
Код:
А вот такое удаление работает нормально: Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
|
07.06.2011, 06:37 | #2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Как минимум в первом случае вы не сможете присвоить указателю значение NULL (или какое-то другое), т.к. переменную типа "указатель на WCHAR" вы передаете по значению, и этой переменной нельзя присвоить никакое новое значение (можно только локальной копии, которая будет уничтожена при выходе из функции - а это бессмысленно).
Во втором случае у вас тоже ошибка - вы передаете переменную "указатель на WCHAR" по указателю и присваиваете ей NULL корректно, однако для удаления массива необходимо вызвать delete[] для указателя на массив, т.е. нужна такая строчка: Код:
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
07.06.2011, 07:38 | #3 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
ImmortalAlexSan
Но на строке с delete вылетает Debug Error. А вот такое удаление работает нормально: Забавный все таки язык программирования C++. Вот есть два кода - один корректный, другой - говнокод. Но при этом первый вызывает ошибку, а второй отрабатывает нормально (((: Может быть, я не правильно передаю указатель в функцию? ты неправильно выделаешь память и/или работаешь с ней.
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
07.06.2011, 08:01 | #4 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
ImmortalAlexSan, код правильный. Может ты не правильно передаешь. Вот быстро набросал, правда я не WCHAR юзал.
Код:
Последний раз редактировалось profi; 07.06.2011 в 18:00. |
07.06.2011, 08:09 | #5 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Гром, bool DeletePointer((WCHAR*)& pPointer), компилятор не пропускает, подчеркивает.
delete[] (*pPointer); - с этим такая же канитель. Если ошибка лежит глубже, то я с памятью работаю и выделяю её в одной лишь функции: Код:
И кстати, после выпадения ошибки дебагера, жму "пропустить", и прога работает дальше корректно))) Опять всё нормально считывается из памяти. profi, попробовал вызвать функцию не из функции, а из основного кода, - такая же хрень.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
Последний раз редактировалось ImmortalAlexSan; 07.06.2011 в 08:14. |
07.06.2011, 08:18 | #6 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
ImmortalAlexSan ну теперь ясно . Ты же не правильно указатель удаляешь. Ты в функцию передавал массив указателей.
Сигнатура функции: Код:
Код:
Код:
Вот исправил, как то так: Код:
Последний раз редактировалось profi; 07.06.2011 в 18:01. |
07.06.2011, 14:44 | #7 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
profi, у меня не двумерный массив... У меня просто
Код:
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
Последний раз редактировалось ImmortalAlexSan; 07.06.2011 в 14:55. |
07.06.2011, 14:51 | #8 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Код:
|
07.06.2011, 14:57 | #9 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
profi, спасибо огромное вам! Я кажется понял в чем ошибка. С удалением указателя в функции придется работать как с двумерным динамич. массивом, сейчас проверю довод... Сначала проверил так:
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
Последний раз редактировалось ImmortalAlexSan; 07.06.2011 в 15:15. |
07.06.2011, 15:55 | #10 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Огогого сколько указателей . Кстати сделай лучше так:
Код:
Последний раз редактировалось profi; 07.06.2011 в 17:52. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужно написать программу в debug | melkaya9112 | Помощь студентам | 1 | 09.12.2010 01:01 |
Visual Studio 2010, при запуске на debug или rebuild вылетает ошибка | Evgeniy1989 | Общие вопросы .NET | 1 | 20.08.2010 08:34 |
error C2541: 'delete' : cannot delete objects that are not pointers | novokhatsky | Общие вопросы C/C++ | 2 | 14.12.2009 10:25 |
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/main.exe : fatal error LNK11 | prefak | Win Api | 0 | 19.04.2009 16:51 |
Debug/DLL10.dll : fatal error LNK1136: invalid or corrupt file | AHJLPeu* | Общие вопросы C/C++ | 2 | 23.10.2008 20:59 |