Здравствуйте, Аноним, Вы писали:
А>Выделяю память таким образом:
А>А>char (*varray)[200] = (char (*)[200]) &new char[200];
А>
А>Все вроде бы ок, но пытаясь удалить через delete вполучаю эксепшн. У кого какие догадки?
Что здесь делает оператор взятия адреса '&' ? Зачем ты его туда поместил и что по-твоему он там делает?
С точки зрения С++ это код некорректен. Результат new expression не является lvalue и, поэтому, оператор взятия адреса к нему неприменим. Компилятор должен выдавать сообщение об ошибке. Если твой компилятор не выдает такого сообщения, то остается только гадать, как же он понимает этот код (неудивительно, что все в конечном итоге рушится).
Если уж ты хочешь доступаться к выделенной памяти через такой указатель, то никакой оператор взятия адреса тут не нужен
char (*varray)[200] = (char (*)[200]) new char[200];