今天,在EFNet C++ Wiki的文章heap corruption中,我找到了兩段代碼。避免堆腐敗
void this_is_bad() /* You wouldn't believe how often this kind of code can be found */
{
char *p = new char[5]; /* spend some cycles in the memory manager */
/* do some stuff with p */
delete[] p; /* spend some more cycles, and create an opportunity for a leak */
}
另一種方法:
void this_is_good()
{
/* Avoid allocation of small temporary objects on the heap*/
char p[5]; /* Use the stack instead */
/* do some stuff */
}
有人可以幫助我瞭解爲什麼第一段代碼是沒有考慮好?
誰在第一個片段寫評論的人給我的印象非專業。5個字節的分配通常在堆棧上比在堆上更有意義,並且異常安全性也很好,但是可以通過較少的反駁評論來改善這些觀點(以「*你不會相信*「是一個不好的跡象)。 – asveikau
順便說一下,搜索它看起來不是維基百科,但這個網站的評論:http://www.efnetcpp.org/wiki/Heap_Corruption – asveikau
我的不好,其實我很匆忙。我讀了wiki。 –