0

Visual Studio で次のエラーが表示されます: Debug Assertion Failed! 式: (L"バッファが小さすぎます" && 0)

次のコード行で発生します。

program_name = (char *) malloc(strlen(argv[0])+1);
strcpy_s(program_name,sizeof(program_name),argv[0]);

文字配列をコピーしようとしているバッファのサイズが小さすぎるようですが、その理由はわかりませんか?

4

1 に答える 1

3

sizeof(program_name)へのポインタのサイズを返しますchar。それはあなたが望むものではありません。これを に置き換えてstrlen(argv[0])+1、割り当てられたバッファーのサイズを渡します。

ただし、C++ では、次のように使用した方がよいことにも注意してくださいstd::string

std::string program_name(argv[0]);
于 2013-10-16T03:12:52.137 に答える