如何从 C++ 中的外部函数调用删除运算符

How do I call delete operator from an outer function in C++?

本文关键字:外部 函数调用 删除 运算符 C++      更新时间:2023-10-16

如果我有这样的东西:

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

一切正常,动态内存标记为可用。

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

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

哪里

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

内存没有标记为空闲,它是这样的:

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

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

原始来源:

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

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

0x0056BB28 ee fe ee fe ee fe ee fe ee fe ee fe

fe îþîþîþ

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

FEEEFEEE "fee fee",由Microsoft的调试 HeapFree() 用于标记 释放堆内存。附近的一些内部簿记值可能具有 高词也设置为 FEEE。

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