前提
以下のソースコードのように、
malloc関数を使って領域を確保し、初期化しようとしていましたが以下のメッセージが発生しました。
実現したいこと
・バッファーオーバーフローの発生をなくしたい。
発生している問題・エラーメッセージ
警告 C6386 'heap' への書き込み中にバッファー オーバーランが発生しました(17行目)
該当のソースコード
c
1#include<stdio.h> 2#include<stdlib.h> 3 4int main() { 5 int* heap; //メモリの確保に使うポインタ型 6 const int A = 50; //定数 7 int n = 0; //標準入力用変数 8 9 scanf_s("%d", &n); 10 11 heap = (int*)malloc(sizeof(int) * (A / n)); //メモリを確保 12 if (heap == NULL) { 13 exit(0); 14 } 15 16 for (int i = 0; i < A / n; i++) { //初期化 17 heap[i] = 0; 18 } 19 20 return 0; 21}
試したこと
11行目や16行目の A / n となっているところを A や n 単体で試したらメッセージは表示されませんでした。
補足情報(FW/ツールのバージョンなど)
windows11
visual studio 2022 を使っています
回答1件
あなたの回答
tips
プレビュー