0

このコードには深刻な問題があると誰かに言われましたが、私はそのような問題に頭を悩ませることができませんでした。皆さん、これについて私に教えてくれませんか?

static char BASED_CODE szFilter[] = "HTML Files (*.xls)|*.xls|All Files (*.*)|*.*||";

const char* filter = "HTML Files (*.xlsx)|*.xlsx|All Files (*.*)|*.*||";
size_t length = strlen(filter);
strcpy_s(szFilter, length + 1, filter);
4

3 に答える 3

2

ええと、バッファ オーバーランが飛び出しましszFilterfilter

std::stringC++ を使用しているのに使用しないのはなぜですか? これにより、これらの問題は解消されます。

于 2011-04-19T11:47:46.210 に答える
1

の 2 番目のパラメーターは、宛先バッファーstrcpy_s()のサイズでなければなりません。入力文字列のサイズを指定しました。

strcpy()しかし、C++ で作業しているので、 (etc.) を完全に避けて、 std::string.

于 2011-04-19T11:49:55.147 に答える
0

szFilterは よりも短いためfilter、 にコピーfilterする十分な場所がありませんszFilter。現在のコードには未定義の動作があります。

于 2011-04-19T11:51:44.850 に答える