假设我有一个LPSTR变量。如何在使用变量后释放内存。是吗
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;或
delete []szFileName;敬请指教
发布于 2009-11-06 23:36:05
如果内存是使用new char[SIZE]分配的,则需要使用delete []释放它。
发布于 2009-11-07 00:14:09
如果不了解GetSBCSBuffer的细节,您就无法回答这个问题。希望写这个函数的人给你留下了代码和/或文档,这样你就可以知道字符串是从哪里来的。这可能是你的两个选择都不正确。GetSBCSBuffer的作者可能使用了不同的内存分配器,或者返回了指向sFilePath内部位置的指针。在最后一种情况下,呼叫任何解除分配器都是非常糟糕的。
我刚刚注意到你在给elder_george's answer的评论中自己回答了这个问题。该实现使用了new[],因此您需要使用delete[]。
https://stackoverflow.com/questions/1688278
复制相似问题