環境後:視窗7親64,微軟的Visual Studio 2015企業版本14.0.25424.00更新3C++上刪除錯誤[]通過指針迭代
int testFunction()
{
std::string _orig = "[188 80% (1/2)O:152]";
std::string _orig2 = "[999 99% (1/1)O:999]";
char *orig = NULL;
char *orig2 = NULL;
orig = new char[_orig.length() + 1];
strcpy(orig, _orig.c_str());
orig2 = new char[_orig2.length() + 1];
strcpy(orig2, _orig2.c_str());
*orig++;
*orig2++;
int a = atoi(orig);
int b = atoi(orig2);
delete[] orig;
delete[] orig2;
return 0;
}
運行上面代碼崩潰與「_CrtIsValidHeapPointer(塊)「錯誤。
如果我不迭代(* orig ++和* orig2 ++),那麼沒有問題。
所以我的問題是,我怎樣才能遍歷指針,然後當我做完我需要做的與他們,刪除[]他們正確?
爲什麼要使用'char'指針?整個使用'std :: string'。 –
我很想,但我需要使用atoi(),它不會在標準::字符串上工作 – Zyre
(1)爲什麼你需要它?有C++等價物。 (2)你* *實際上可以將'std :: string'中的指針傳遞給'atoi'就好了:'atoi(str.c_str())'起作用。 –