本文介绍了投射到指针 - 托管还是非托管?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 假设我有以下代码:Hi,Let's say I have the following code:consoleHelper.write_status("Error: " + (char*)gai_strerror(err_code)); 在那里有一个char *,并且没有调用 delete 。这个内存是以某种方式自动管理的,还是你必须做以下的事情?There's a cast there to a char* and there's no delete called on it. Is this memory somehow automatically managed, or would you have to do something like the following?char* cast_ch = (char*)gai_strerror(err_code);consoleHelper.write_status("Error: " + cast_ch);delete cast_ch; 即使使用的内存很小,我也是d希望尽可能防止所有内存泄漏,以确保应用程序理论上可以永久运行而不会出现问题。 我尝试过: 没什么,只是征求意见Even if the memory used is tiny, I'd like to prevent all memory leaks wherever possible to ensure the application can theoretically run forever with no issues.What I have tried:Nothing, just asking for advice推荐答案你不应该释放内存(它不是明确要求的文档,而且,你不知道图书馆实际如何分配它。) 请注意:如果有泄漏,这是(不太可能)图书馆的作者错误(可能无害)。另一方面,在指针上调用delete会很危险,完全由你负责。 : - )You should NOT release memory (it is not explicitely required in the documentation and, moreover, you don't know how the library actually allocates it).Please note: if there is a leak, that's a (unlikely) library's author mistake (and probably harmless). On the other hand, calling delete on the pointer would be dangerous and entirely of your responsibility. :-)文档(您应该首先检查): gai_strerror [ ^ ]告诉你返回是一个指向字符常量的指针,因此你不应该对它做任何事情。The documentation (which you should always check first) : gai_strerror[^] tells you that the return is a pointer to a character constant, so you should not do anything with it. 这篇关于投射到指针 - 托管还是非托管?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
07-23 12:47
查看更多