ниже вы найдете код (который компилируется / запускается), который вкратце вызывает функцию, которая динамически распределяет массив в куче.
#include "stdafx.h"
#include <stdio.h>
class A
{
public:
A()
{
printf ( "constructor has been called !!! \n" );
}
~A()
{
printf ( "destructor has been called !!! \n" );
}
char* f( void )
{
//char *data_raw = NULL;
data_raw = NULL;
data_raw = new char [ 20 ];
for( int i = 0; i < 20; i++ )
{
data_raw[ i ] = '0';
}
data_raw[ 0 ] = 'h';
data_raw[ 1 ] = 'e';
data_raw[ 2 ] = 'l';
data_raw[ 3 ] = 'l';
data_raw[ 4 ] = 'o';
data_raw[ 5 ] = ' ';
data_raw[ 6 ] = 'w';
data_raw[ 7 ] = 'o';
data_raw[ 8 ] = 'r';
data_raw[ 9 ] = 'l';
data_raw[ 10 ] = 'd';
data_raw[ 11 ] = '!';
return data_raw;
} //data raw ptr-var is destroyed
private:
char *data_raw;
};
int _tmain( int argc, _TCHAR* argv[] )
{
char *data = NULL;
printf( "data: %c", data );
A a;
data = a.f();
delete [] data;
return 0;
}
Мои вопросы:
1) относительно уничтожения памяти, выделенной динамически, я должен использовать delete или delete []?они оба компилируются ...
2) когда я использую первый (удалить), вызывается деструктор класса, но не когда я использую delete []?