C++ 如何";删除“;函数返回的char*变量?

C++ 如何";删除“;函数返回的char*变量?,c++,C++,功能原型: char * get_something(); 现在我们需要释放“get_something”函数分配的内存 删除还是删除[] 我们没有关于函数impl的信息--字符数组或单个字符你说不出来 函数的作者应该知道不应该像这样返回指向已分配内存的指针 即使您确实发现了(可能是通过查阅文档?),您也必须确保您的代码是以与该函数完全相同的方式编译的。如果您的delete运行时与它们的new运行时不同,则会发生“快乐地狱” 你最好的办法是缠着图书馆供应商,向你提供一个release\u so

功能原型:

char * get_something();
现在我们需要释放“get_something”函数分配的内存

删除还是删除[]

我们没有关于函数impl的信息--字符数组或单个字符

你说不出来

函数的作者应该知道不应该像这样返回指向已分配内存的指针

即使您确实发现了(可能是通过查阅文档?),您也必须确保您的代码是以与该函数完全相同的方式编译的。如果您的
delete
运行时与它们的
new
运行时不同,则会发生“快乐地狱”


你最好的办法是缠着图书馆供应商,向你提供一个
release\u something(char*)
函数来为你清除内存。

除非有文档记录,否则任何人都会猜到。您可以将其加载到调试器中,并查看调用了
newchar
newchar[]
中的哪一个。但我的第一个行动是找到谁写了这篇文章并要求提供文档。还有一种可能性是,它返回一个指针,指向一个已解构的
const char*
。也许这根本不是堆上的内存。可能指针是由另一个第三个对象管理的,该对象将在销毁时将其清除。API中是否有相应的
delete\u something(char*ptr)
函数?在与新对象不同的级别删除不是一个好的设计。最好是
void get_something(std::string&s)