在對類進行例項化時也許會批量申請
例如,申請10個account例項,
account *buf=new account[10];//申請記憶體,並呼叫預設建構函式
for(int i=0;i<10;i++)
new(buf+i) account("ab",i);呼叫用具有兩個引數的建構函式,在原來的記憶體上
上面的兩次呼叫建構函式,只能有乙個進行_name的記憶體的動態分配,否則兩次的 動態分配只呼叫一次析構函式,造成記憶體洩漏
在釋放記憶體時可以直接
delete buf//注意呼叫析構函式的順序是反的
因為buf就是account陣列,就會以此進行呼叫析構函式
也可以分別進行呼叫析構函式
for(int i=0;i<10;i++)
buf[i].~account();
不過我認為還是呼叫delete buf更能夠和上面的new對應,兩者只能使用乙個,
但是有乙個疑問就是buf只是申請例項本身的記憶體,而建構函式是在申請char*_name的記憶體,析構函式是刪除_name的記憶體,當再次進行delete時是刪除例項本身的記憶體,但是實際上卻不是這樣。
char *buf=new char [sizeof(account)*10];//預分配一定的記憶體
int offset=sizeof(account);//根據偏移量進行初始化
for(int i=0;i<10;i++)
//account *p=reinterpret_cast(buf);
account *ps=(account*)buf;
for(int i=0;i(ps);
delete buf;刪除記憶體
這個例子和上面的疑問相對應,只有在預分配的情況下才可以說的通 記憶體動態分配與釋放
1 c語言的函式malloc和free 1 函式malloc和free在標頭檔案中的原型及引數 void malloc size t size 動態配置記憶體,大小有size決定,返回值成功時為任意型別指標,失敗時為null。void free void ptr 釋放動態申請的記憶體空間,呼叫fre...
記憶體動態分配與釋放
1 c語言的函式malloc和free 1 函式malloc和free在標頭檔案中的原型及引數 void malloc size t size 動態配置記憶體,大小有size決定,返回值成功時為任意型別指標,失敗時為null。void free void ptr 釋放動態申請的記憶體空間,呼叫fre...
記憶體動態分配與釋放
記憶體的動態分配需要使用函式malloc,函式free和運算子sizeof來實現。函式malloc的原型是 void malloc unsigned int size 函式malloc的作用是在記憶體中分配乙個長度為size的連續儲存空間。函式的返回值是乙個指向分配空間的起始位置的指標。如果分配空間...