Я новичок в C ++ и пытаюсь понять правильный способ освобождения памяти массива.Я получаю следующую ошибку при попытке удалить выделенный массив указателей: «освобожденный указатель не был выделен».
Мой указатель определен как:
T * al ;
al = new T[top] ;
В то время как мой деструктор длякласс, в котором указатель al
определен в:
for( int i = 0 ; i < current ; i++ )
delete( al+i ) ;
delete [] al ;
Деструктор для class T
:
for( int i = 0 ; i < length ; i++ )
delete( p+1 ) ;
delete [] p ;
Где p
определяется как:
char *p ;
length = strlen( str ) ;
p = new char[length] ;
strcpy( p, str ) ;
Как правильно распределить память и / или как это исправить?