String LPSTR使用后如何释放内存

String LPSTR使用后如何释放内存,string,unicode-string,String,Unicode String,假设我有一个LPSTR变量。使用变量后如何释放内存。 是吗 或 请告知如果使用新字符[SIZE]分配内存,则需要使用删除[]释放内存。如果不知道GetSBCSBuffer的具体信息,您无法回答该问题。希望编写函数的人给您留下了代码和/或文档,以便您可以看到字符串的来源。你的两个选择可能都不正确。GetSBCSBuffer的作者可能使用了不同的内存分配器,或者返回了指向sFilePath内部位置的指针。在最后一种情况下,调用任何deallocator都是非常糟糕的 我只是注意到你自己在评论中回答了

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


请告知

如果使用
新字符[SIZE]
分配内存,则需要使用
删除[]
释放内存。如果不知道GetSBCSBuffer的具体信息,您无法回答该问题。希望编写函数的人给您留下了代码和/或文档,以便您可以看到字符串的来源。你的两个选择可能都不正确。GetSBCSBuffer的作者可能使用了不同的内存分配器,或者返回了指向sFilePath内部位置的指针。在最后一种情况下,调用任何deallocator都是非常糟糕的


我只是注意到你自己在评论中回答了这个问题。实现使用了new[],因此您需要删除[]。

我没有显式地分配我所做的所有工作都是在代码中编写的,其中getsbcsbuffer()函数接受一个字符串并返回一个字符*类似于int len=WideCharToMultiByte(CP_ACP,0,str,-1,0,0,0,0);//分配缓冲区以保存转换后的字符串LPSTR result=new char[len];//进行多字节转换(CP_ACP,0,str,-1,result,len,0,0);返回结果;int len=WideCharToMultiByte(CP_ACP,0,str,-1,0,0,0);//分配缓冲区以保存转换后的字符串LPSTR result=new char[len];//进行多字节转换(CP_ACP,0,str,-1,result,len,0,0);返回结果;这是写在getsbcsbuffer中的内容。很抱歉,我将答案放在了原始文本中,因为我不知道如何在注释中超链接(此处为新内容)。您刚刚发布的结果是使用new char[len]分配的,因此必须使用delete[]szFileName释放它。始终将new与delete匹配,将new[]与delete[]匹配。
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
delete []szFileName;