Re: Экзотический вопрос:
От: Андрей Тарасевич Беларусь  
Дата: 20.08.03 23:22
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Выделяю память таким образом:

А>
А>char (*varray)[200] = (char (*)[200]) &new char[200];
А>

А>Все вроде бы ок, но пытаясь удалить через delete вполучаю эксепшн. У кого какие догадки?

Что здесь делает оператор взятия адреса '&' ? Зачем ты его туда поместил и что по-твоему он там делает?

С точки зрения С++ это код некорректен. Результат new expression не является lvalue и, поэтому, оператор взятия адреса к нему неприменим. Компилятор должен выдавать сообщение об ошибке. Если твой компилятор не выдает такого сообщения, то остается только гадать, как же он понимает этот код (неудивительно, что все в конечном итоге рушится).

Если уж ты хочешь доступаться к выделенной памяти через такой указатель, то никакой оператор взятия адреса тут не нужен

char (*varray)[200] = (char (*)[200]) new char[200];
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.