[解決済み] strcpy' と 'strcpy_s' の違い?
2022-02-17 12:44:48
質問内容
を使おうとすると
strcpy
を使用して文字列をコピーすると、コンパイルエラーが発生しました。
error C4996 'strcpy': This function or variable may be unsafe.
Consider using `strcpy_s` instead. To disable deprecation,
use `_CRT_SECURE_NO_WARNINGS`. See online help for details.
とはどのような違いがあるのでしょうか?
strcpy
と
strcpy_s
?
解決方法は?
strcpy
は安全でない関数です。
を使って文字列をコピーしようとすると
strcpy()
を格納するのに十分な大きさのないバッファに追加すると、バッファオーバーフローを引き起こします。
strcpy_s()
は
セキュリティ強化版
の
strcpy()
.
と
strcpy_s
を使用すると、コピー時のバッファオーバーフローを防ぐために、コピー先バッファのサイズを指定することができます。
char tuna[5]; // a buffer which holds 5 chars incluing the null character.
char salmon[] = "A string which is longer than 5 chars";
strcpy( tuna, salmon ); // This will corrupt your memory because of the buffer overflow.
strcpy_s( tuna, 5, salmon ); // strcpy_s will not write more than 5 chars.
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] CRT_SECURE_NO_WARNINGSの使用方法
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】C++の余分な資格エラー
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較