84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
认证高级PHP讲师
在C++层面, 你这个代码并没有错, 也会把内存free的掉.但是, 但是, C/C++的runtime, 也就是libc, 并不会真正free掉这个内存, 因为如果后面又有malloc, 他还得向操作系统申请内存, 还不如先自己留着.目前所有的libc都会自己cache住内存, 用来提高申请和释放的速度.
free
PS:你这个C++代码写的太那个了, 如果以后还这么写, 会吃不少苦头的
题主用的什么环境,我用的MAC + g++ 没什么问题。
`tianbing:Temp tianbing$ cat test.cpp #include #include using namespace std; int main(int argc, char ** argv){ vector 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 的容器。
在C++层面, 你这个代码并没有错, 也会把内存
free
的掉.但是, 但是, C/C++的runtime, 也就是libc, 并不会真正free掉这个内存, 因为如果后面又有malloc, 他还得向操作系统申请内存, 还不如先自己留着.
目前所有的libc都会自己cache住内存, 用来提高申请和释放的速度.
PS:
你这个C++代码写的太那个了, 如果以后还这么写, 会吃不少苦头的
题主用的什么环境,我用的MAC + g++ 没什么问题。
这样的情况如果可以,推荐使用智能指针和 STL 的容器。