如果我有类似的东西:
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
答案 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特定的内存管理器行为。