環境を反復した後に:Windows 7のプロのx64、マイクロソフトのVisual Studio 2015のEnterprise、バージョン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'を使用してください。 –
私は大好きですが、sto :: stringで動作しないatoi()を使う必要があります – Zyre
(1)なぜそれが必要ですか? C++に相当するものがあります。 (2)実際に 'std :: string'の中のポインタを' atoi'に渡すことができます: 'atoi(str.c_str())'が機能します。 –