我知道有關於此的許多問題,但我已經嘗試了一切,似乎沒有任何工作。C++刪除char **
我有char**
當我嘗試刪除它時,我得到異常拋出。當我不刪除它時,函數返回後會引發異常。
我有一個類似的功能:
void function(){
int argc = 5; char** argv;
argv[0] = "...";
argv[1] = "...";
//...
Package package;
package.ProcessCommandLineArgs(argc, argv); // this does NOT delete argv
// THIS FAILS
for(int i=0;i<5;i++)
delete[] argv[i]; // <--- EXCEPTION HERE
delete[] argv;
}
我一直在使用該功能只適用本甚至嘗試:
void function(){
int argc = 5; char** argv;
argv[0] = "...";
argv[1] = "...";
//...
// just declare argv and delete it also fails
for(int i=0;i<5;i++)
delete[] argv[i]; // <--- EXCEPTION HERE
delete[] argv;
}
我不能沒有使用char**
因爲我有一個使用4類呼叫鏈中的相同參數,所以我沒有選擇使用vector<string>
。
我將不勝感激任何幫助。 如果你想投票下來,那就做吧,但請給我一個答案,因爲我一直在這個問題上徘徊數小時。
謝謝。
你永遠不會爲'argv'分配內存...... – Rakete1111
好的,你在哪裏'new argv'? –
這些函數對char **具有什麼作用?機會是你仍然可以使用'std :: vector'。 –