Re: Вопрос по классу list в STL для С++

Mihalna

#include <list>
using namespace std;
void main {
list<int>* b = new list<int>[1];
delete b;
}
Почему не работает такое консольное приложение?
Ошибка возникает при выполнении программы, а точнее оператора delete. При этом с самим массивом можно нормально работать, единственная проблема - удалить его. В то же время, если динамически создать не массив, а только один елемент (т.е. new list<int> то удаляется он нормально.
Буду очень благодарен за ответ.

myrka68

delete[] b; попробуй

Julie16

Ну блин. Вообще говоря прежде чем садиться программировать на новом языке, сначала бы неплохо прочитать хоть какую-нибудь книженцию. В любой книге по С++ описываются различия между delete && delete[]. Кстати, именно по этой причине нельзя использовать auto_ptr для массивов. А жаль.

Mihalna

Всем большое спасибо, delete[] работает. Пойду читать, что же это такое =)

evgen5555

Ошибка возникает при выполнении программы, а точнее оператора delete.
На самом деле, изврат начинается отсюда:
list<int>* b = new list<int>[1];

evgen5555

И могу поспорить, что ты даже и не подозреваешь, что создалось оператором new

myrka68

расскажи

evgen5555

Я-то знаю, а вот спрашивающий - по всей видимости, нет. Пускай читает книжку.

Julie16

Вероятнее всего ничего не создалось разве что несколько записей во внутренних структурах аллокатора.

myrka68


Оставить комментарий
Имя или ник:
Комментарий: