VS C++ について誤解があります。バージョン 2010 では、以下のコードは正常に動作します。文字列を取得でき、あとがきでメモリを解放できます。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define MAX 14
void GetString(char **str);
int main(int argc, char *argv[])
{
char *str = NULL;
GetString(&str);
printf("%s\n", str);
getchar();
free(str);
return 0;
}
void GetString(char **str)
{
char *s = (char *) malloc(sizeof(char) * MAX);
strcpy(s, "HELLO, WORLD!");
*str = s;
}
しかし、VS 2008 では、上記のコードでメモリ破損エラーが発生します。使用される基準にわずかな違いがあると思います。私は正しいですか?いいえの場合、同じコードが異なるバージョンの Visual Studio で機能しない理由を教えてください。
ご回答ありがとうございます。
ps 何が起こるのか気になりますが、トピックに関する情報はまだ見つかりませんでした。
pps 使用言語 - C