方法返回之前怎么释放要返回对象的内存
方法返回之前如何释放要返回对象的内存?
我写的一个方法,值是一串长字符串,保存在一个指针里,请问如何在返回改值之前释放掉改值的内存?
pbuf这个指针大小在1Kb之上。
------解决思路----------------------
又要返回串, 又要释放内存..... 你这个要求不对.
因为你返回的是指针, 那么就肯定需要在函数返回后, 这个指针仍然有效. 但你说要删除掉, 那这个指针都无效了, 你返回了也是错的.
应该让函数调用者去释放.
或者使用更高级的智能指针, 有内存引用计数,
------解决思路----------------------
你把这个指针指向的内存释放了,调用方如何可靠地从这个指针指向的内存中获取数据?
一般来说,这类问题在C中有两种解决方法
1.调用方事先分配内存,将分配的内存地址和长度作为参数传递给被调用方,就像gets那样
2.被调用方malloc分配内存,调用方负责释放,就像glibc的getline那样
如果是C++的话,可以考虑使用std::string代替char*形式的字符串
------解决思路----------------------
没太懂你要求,推荐使用标准模板库中的智能指针,可以在你不需要的时候自动释放的,不用自己去写代码释放
------解决思路----------------------
Dll和调用者之间最好是谁分配谁释放原则,在构造函数中分配,在析构函数中释放,这是常识
我写的一个方法,值是一串长字符串,保存在一个指针里,请问如何在返回改值之前释放掉改值的内存?
char * pBuf;
return pBuf;
pbuf这个指针大小在1Kb之上。
------解决思路----------------------
又要返回串, 又要释放内存..... 你这个要求不对.
因为你返回的是指针, 那么就肯定需要在函数返回后, 这个指针仍然有效. 但你说要删除掉, 那这个指针都无效了, 你返回了也是错的.
应该让函数调用者去释放.
或者使用更高级的智能指针, 有内存引用计数,
------解决思路----------------------
你把这个指针指向的内存释放了,调用方如何可靠地从这个指针指向的内存中获取数据?
一般来说,这类问题在C中有两种解决方法
1.调用方事先分配内存,将分配的内存地址和长度作为参数传递给被调用方,就像gets那样
2.被调用方malloc分配内存,调用方负责释放,就像glibc的getline那样
如果是C++的话,可以考虑使用std::string代替char*形式的字符串
------解决思路----------------------
没太懂你要求,推荐使用标准模板库中的智能指针,可以在你不需要的时候自动释放的,不用自己去写代码释放
------解决思路----------------------
Dll和调用者之间最好是谁分配谁释放原则,在构造函数中分配,在析构函数中释放,这是常识