関数で作業中にエラーが発生しました。 debbugerは_chdir(dirCorrente);
行の "damied heap"と言っています。動的に割り当てられた変数と_chdirウィンドウを操作しているときにヒープが破損した場合は、
mainは以下のような関数を呼び出します。 - char * temp = getCartellaCorrente(); - これらの機能に関連していないいくつかの他のもの... - TEMP = setCartellaCorrente( "CDテスト")
は実行がsetCartellaCorrenteのdirCorrente値が停止する「"C:\ユーザーはルカ\デスクトップ\ \リモート - コントロールプロジェクト\ FirstService \ Debug \ test "'
私は動的に割り当てられた変数に何か間違っていると思います。
私は48時間以来この問題に取り組んでいます。私は割り当てられた変数や_chdir関数について何か重要なことは知らないと思います。
あなたが私が恋しいことを私に説明することができれば、本当に感謝しています。
char* getCartellaCorrente() {
char* temp;
size_t size;
LPWSTR dirCorrente = new TCHAR[DEFAULT_BUFLEN];
GetCurrentDirectory(DEFAULT_BUFLEN, dirCorrente);
size = wcslen(dirCorrente);
temp = (char *)malloc(size);
wcstombs_s(NULL, temp, size+1, dirCorrente, size);
return temp;
}
char* setCartellaCorrente(char* relative) {
char *dirCorrente;
if (strlen(relative)>=5 && relative[4] == ':') {
dirCorrente = (char *)malloc(DEFAULT_BUFLEN);
strcpy_s(dirCorrente, DEFAULT_BUFLEN, &relative[3]);
}
else {
dirCorrente = getCartellaCorrente();
relative[2] = '\\';
strcat_s(dirCorrente, DEFAULT_BUFLEN, &relative[2]);
printf("goode %s \n", dirCorrente);
}
//fixPathSlash(dirCorrente);
printf("\n2: %s\n", dirCorrente);
int i = _chdir(dirCorrente); //HERE IT STOPS
printf("wtf: %d\n", i);
free(dirCorrente);
printf("boh\n");
return getCartellaCorrente();
}
これは私の最初の質問です。申し訳ありませんが、私はいくつかの重要な情報を逃した場合、私は速く編集します。
'_chdir'はあなたのパスにダメージを与えません。どこかのバッファを上書きしています。また、あなたは、 'main'関数と* included *ヘッダを含む問題を再現する短い例である[mcve]を絶対に**提供しなければなりません。 –
このコードは '/ fixPathSlash'のためコンパイルされません –
あなたのコードは** C++ **で、Cではなく、a)あなたがC++コンパイラでコンパイルしているので、b)あなたは' new'を使用しています。 –