假设我有一个 LPSTR 变量。使用变量后如何释放内存。是吗
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
或者
delete []szFileName;
好心提醒
假设我有一个 LPSTR 变量。使用变量后如何释放内存。是吗
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
或者
delete []szFileName;
好心提醒
如果内存是使用分配的,new char[SIZE]
则需要使用delete []
.
如果不了解 GetSBCSBuffer 的细节,您将无法回答这个问题。希望编写该函数的人给您留下了代码和/或文档,这样您就可以看到字符串的来源。可能您的选择都不正确。GetSBCSBuffer 的作者可能使用了不同的内存分配器或返回了指向 sFilePath 内部位置的指针。在最后一种情况下,调用任何释放器都是非常糟糕的。
我刚刚注意到您在对Elder_george 的回答的评论中自己回答了这个问题。实现使用了new[],所以你需要delete[]。