如何在C ++中从外部函数调用delete运算符?

时间:2014-04-01 12:49:54

标签: c++ delete-operator

如果我有类似的东西:

char* plainText = init();
delete [] plainText;

一切正常,动态内存标记为空闲。

但是当我打电话给这样的话时:

char* plainText = init();
deletePlainText(plainText);

哪里

void deletePlainText(char *plainText)
{
   delete[] plainText;
}

内存未标记为免费,它是这样的:

+  plainText 0x005cb160 "îþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþ... char *

是否可以从外部函数调用delete运算符以及如何调用?

原始来源:

http://pastebin.com/1pybC02t
http://pastebin.com/KbtfG5Cw
http://pastebin.com/NSyULHaF

1 个答案:

答案 0 :(得分:1)

如果你看到VS中的内存窗口(变量'plainText'的地址),它看起来如下:

0x0056BB28 ee feee e ee feee fe ee fe feîþîþîþîþîþþþîþþþþþþþþþþþþþþþþ

这是来自http://en.wikipedia.org/wiki/Magic_number_%28programming%29

的信息
  

FEEEFEEE“费用”,由Microsoft的调试HeapFree()用于标记   释放堆内存。附近的一些内部簿记价值可能有   这个词也设置为FEEE。

因此,这表明您的内存已被释放,现在您不应该使用它。这个神奇的数字是Microsoft特定的内存管理器行为。