一開始在回圈里寫了個動態陣列,可以正常運行。后來當我把動態陣列的定義寫在回圈的末尾,釋放記憶體寫在了回圈的開頭,從第二次回圈開始釋放記憶體,即在當前回圈的末尾建立動態陣列,到下一個回圈的開始釋放記憶體,就出現了報錯,引發了例外:讀取訪問權限沖突。L是0X1110112。該怎么解決呢?我是個新手,程式大概如下,請大家幫幫忙,找一下是哪里的問題然后告訴我怎么改,謝謝!
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<cstdlib>
#include<math.h>
#include<iomanip>
#include<fstream>
#include<sstream>
#include<stdlib.h>
#include<time.h>
#include<string.h>
using namespace std;
struct D
{
int n;
};
D *****LMP_Store;
int nn=0;
int L1=0,L2=0,L3=0,B=0;
void main()
{
do
{
int q,i,j,k;
nn+=1;
if (nn > 1)
{
for (q = 0; q < B; q++)
{
for (i = 0; i < L1; i++)
{
for (j = 0; j < L2; j++)
{
for (k = 0; k < L3; k++)
{
delete[]LMP_Store[q][i][j][k];
LMP_Store[q][i][j][k] = NULL;
}
delete[]LMP_Store[q][i][j];
LMP_Store[q][i][j] = NULL;
}
delete[]LMP_Store[q][i];
LMP_Store[q][i] = NULL;
}
delete[]LMP_Store[q];
LMP_Store[q] = NULL;
}
delete[]LMP_Store;
LMP_Store = NULL;
}
B=nn;
L1=nn;
L2=nn;
L3=nn;
D *****LMP_Store = new D ****[B];
for (q = 0; q < B; q++)
{
LMP_Store[q] = new struct D ***[L1];
for (i = 0; i < L1; i++)
{
LMP_Store[q][i] = new struct D **[L2];
for (j = 0; j < L2; j++)
{
LMP_Store[q][i][j] = new struct D *[L3];
for (k = 0; k < L3; k++)
{
LMP_Store[q][i][j][k] = new struct D;
}
}
}
}
} while (nn < 500);
}
uj5u.com熱心網友回復:
L3 new的一個,delete的[]轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/16292.html
標籤:C語言
