LPSTR使用后如何释放内存
假设我有一个 LPSTR 变量。使用变量后如何释放内存。 是
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
还是
delete []szFileName;
请建议
Suppose i have a LPSTR variable. How do i free the memory after using the variable.
Is it
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
OR
delete []szFileName;
Kindly advise
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果内存是使用
new char[SIZE]
分配的,则需要使用delete []
释放内存。If memory was allocated using
new char[SIZE]
then it needs to be freed usingdelete []
.如果不了解 GetSBCSBuffer 的细节,您就无法回答这个问题。希望编写该函数的人给您留下代码和/或文档,以便您可以了解该字符串的来源。您的选择可能都不正确。 GetSBCSBuffer 的作者可能使用了不同的内存分配器或返回了指向 sFilePath 内部位置的指针。在最后一种情况下,调用任何释放器都是非常糟糕的。
我刚刚注意到您在对 elder_george 的回答的评论中自己回答了这个问题。实现中使用了new[],所以需要delete[]。
You can't answer that question without knowing the specifics of GetSBCSBuffer. Hopefully whoever wrote the function left you with code and/or documentation so you can see where the string comes from. It might be that neither of your alternatives is correct. The author of GetSBCSBuffer might have used a different memory allocator or returned a pointer to a location internal to sFilePath. In the last case it would be very bad to call any deallocator.
I just noticed you answered the question yourself in your comment to elder_george's answer. The implementation used new[] so you need to delete[].