LINUX.ORG.RU

вопрос по С++


0

0

Кто мне объяснит почему нельзя делать следующее:

T *t1 = new T[size1], t2 = new T[size2], *t3;

t3 = t1;
t1 = t2;
t2 = t3;

delete [] t1;
delete [] t2;


у меня вылетает с ощибкой:
*** glibc detected *** free(): invalid next size (fast): 0x0804a008 ***
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()


Спасибо

anonymous

> T *t1 = new T[size1], t2 = new T[size2], *t3;
                        ^ нужна *

а вообще можно

phoenix ★★★★
()
Ответ на: комментарий от Selecter

> Странно, что у тебя вообще скомпилировалось такое.

Почему же? Это компилится если есть конструктор типа T(T*) или T(<Предок T>*)...

k_andy ★★★
()
Ответ на: комментарий от anonymous

Покажи весь код (хотя бы между new и delete). В том, что ты привёл, ошибок нет (если со звездочкой перед t2, конечно).

jek_
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.