0

假设我有一个 LPSTR 变量。使用变量后如何释放内存。是吗

LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;

或者

delete []szFileName;

好心提醒

4

2 回答 2

1

如果内存是使用分配的,new char[SIZE]则需要使用delete [].

于 2009-11-06T15:36:05.367 回答
1

如果不了解 GetSBCSBuffer 的细节,您将无法回答这个问题。希望编写该函数的人给您留下了代码和/或文档,这样您就可以看到字符串的来源。可能您的选择都不正确。GetSBCSBuffer 的作者可能使用了不同的内存分配器或返回了指向 sFilePath 内部位置的指针。在最后一种情况下,调用任何释放器都是非常糟糕的。

我刚刚注意到您在对Elder_george 的回答的评论中自己回答了这个问题。实现使用了new[],所以你需要delete[]。

于 2009-11-06T16:14:08.930 回答