扫码关注官方订阅号
认证高级PHP讲师
在C++层面, 你这个代码并没有错, 也会把内存free的掉.但是, 但是, C/C++的runtime, 也就是libc, 并不会真正free掉这个内存, 因为如果后面又有malloc, 他还得向操作系统申请内存, 还不如先自己留着.目前所有的libc都会自己cache住内存, 用来提高申请和释放的速度.
free
PS:你这个C++代码写的太那个了, 如果以后还这么写, 会吃不少苦头的
题主用的什么环境,我用的MAC + g++ 没什么问题。
`tianbing:Temp tianbing$ cat test.cpp #include<iostream> #include<vector> using namespace std; int main(int argc, char ** argv){ vector<char *> strVec; char *wordTmp = new char[strlen("abc")]; strcpy(wordTmp, "abc"); strVec.push_back(wordTmp); delete[] strVec[0]; cout << "free sucessfully" << endl; return 0; } tianbing:Temp tianbing$ g++ test.cpp -o test tianbing:Temp tianbing$ ./test free sucessfully`
这样的情况如果可以,推荐使用智能指针和 STL 的容器。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
在C++层面, 你这个代码并没有错, 也会把内存
free的掉.但是, 但是, C/C++的runtime, 也就是libc, 并不会真正free掉这个内存, 因为如果后面又有malloc, 他还得向操作系统申请内存, 还不如先自己留着.
目前所有的libc都会自己cache住内存, 用来提高申请和释放的速度.
PS:
你这个C++代码写的太那个了, 如果以后还这么写, 会吃不少苦头的
题主用的什么环境,我用的MAC + g++ 没什么问题。
这样的情况如果可以,推荐使用智能指针和 STL 的容器。