LPSTR使用后如何释放内存

发布于 2024-08-10 04:54:28 字数 224 浏览 9 评论 0原文

假设我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

驱逐舰岛风号 2024-08-17 04:54:28

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

If memory was allocated using new char[SIZE] then it needs to be freed using delete [].

枫林﹌晚霞¤ 2024-08-17 04:54:28

如果不了解 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[].

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文