伊谢尔伦2017-04-17 13:26:55
在C++層面, 你這個程式碼並沒有錯, 也會把記憶體free
的掉.
但是, 但是, C/C++的runtime, 也就是libc, 並不會真正free掉這個記憶體,因為如果後面又有malloc, 他還得向操作系統申請內存, 還不如先自己留著.
目前所有的libc都會自己cache住內存, 用來提高申請和釋放的速度.
PS:
你這個C++程式碼寫的太那個了, 如果以後還這麼寫, 會吃不少苦頭的
ringa_lee2017-04-17 13:26:55
題主用的什麼環境,我用的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`