visual studio 2019でC++を使ってプログラムを書いています。
ビルドすると、
「'PP' への書き込み中にバッファー オーバーランが発生しました: 書き込み可能なサイズは 'ALLN*16' バイトですが、'32' バイトを書き込む可能性があります。」
という警告が出て、該当箇所に緑の波線が出ます。
A.cpp
1#include <iostream> 2#include <stdio.h> 3#include <stdlib.h> 4#include"C.h" 5 6int main() { 7 int aa[7] = { 3,5,3,3,2,5,4 }; 8 int aa2[7] = { 30,50,30,30,20,50,40 }; 9 int a = ISF(aa, aa2,7); 10 return 0; 11}
B.cpp
1#include <iostream> 2#include<stdlib.h> 3#include <stdio.h> 4#include"C.h" 5 6typedef struct { 7 double ka; 8 double se; 9} PathParam; 10 11int ISF(int aa[7], int aa2[7],int OSS) 12{ 13 int ALLN = 0; 14 int i, j, k=0; 15 for (i = 0; i < OSS; i++) ALLN += aa[i]; 16 PathParam* PP; 17 PP = new PathParam[ALLN]; 18 for (i = 0; i < OSS; i++) { 19 for (j = 0; j < aa[i]; j++) { 20 if (i > 3) { 21 PP[k].ka = i; 22 PP[k++].se = i; 23 } 24 else { 25 PP[k].ka = i; 26 PP[k++].se =i; 27 } 28 } 29 } 30 delete[] PP; 31 return 0; 32}
C.h
1int ISF(int aa[7], int aa2[7],int OSS);
B.cppの25行目が該当箇所です。
原因が特定できず長いプログラムですが、どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー