亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何刪除[]“知道”操作數組的大小?

如何刪除[]“知道”操作數組的大小?

C++
RISEBY 2019-06-23 16:51:18
如何刪除[]“知道”操作數組的大小?Foo* set = new Foo[100];// ...delete [] set;你不能把數組的邊界傳遞給delete[]..但這些信息儲存在哪里?標準化了嗎?
查看完整描述

3 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

當您在堆上分配內存時,您的分配程序將跟蹤您已分配了多少內存。這通常存儲在“Head”段中,就在分配給您的內存之前。這樣,當是時候釋放內存時,去分配器確切地知道要釋放多少內存。


查看完整回答
反對 回復 2019-06-23
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

編譯器的一種方法是分配更多的內存,并將元素的計數存儲在HEAD元素中。

例如,如何做到這一點:

這里

int* i = new int[4];

編譯器將分配sizeof(int)*5字節。

int *temp = malloc(sizeof(int)*5)

將“4”存儲在第一個sizeof(int)字節

*temp = 4;

并設定i

i = temp + 1;

所以i將指向一個由4個元素組成的數組,而不是5個元素。

和刪除

delete[] i;

將以下列方式處理:

int *temp = i - 1;int numbers_of_element = *temp; 
// = 4... call destructor for numbers_of_element elements... that are stored in temp + 1, temp + 2, ... temp + 4 if needed
free (temp)


查看完整回答
反對 回復 2019-06-23
  • 3 回答
  • 0 關注
  • 533 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號