私はこの単純なプログラムを持っています。このプログラムを実行すると、セグメンテーション違反が発生し、どこに間違いがあるのかわかりません。どんな助けも歓迎します(Di> = 27のセグメンテーション違反)。重要なのは、機能をすぐに削除すると、セグメンテーション違反が消えることです。または、関数をvoid関数に変換するとき。削除演算子を使用しないため、リークメモリがあることはわかっています。リークメモリが発生しますが、セグメンテーション違反の原因にはなりません(このリークメモリはセグメンテーション違反を引き起こす可能性が非常に高いです)。簡単にするために、削除演算子は使用しませんでした。
#include <iostream>
#include<complex>
using namespace std;
const int Di=27;
typedef struct {
complex<double> Matrix[Di][Di][Di][Di];
} O;
O initializing(int );
int main()
{
O * Operator=new O[1];
int p;
int n;
Operator[0]=initializing(n);
cout<<"hi";
return 0;
}
O initializing(int point)
{
int i,j,m,n;
O *Operator=new O[1];
for(i=0;i<Di-1;i++)
for(j=0;j<Di-1;j++)
for(n=0;n<Di-1;n++)
for(m=0;m<Di-1;m++)
Operator[0].Matrix[i][j][m][n]=2;
cout<<Operator[0].Matrix[Di-1][Di-1][Di-1][Di-1];
return Operator[0];
}