64,648
社区成员
发帖
与我相关
我的任务
分享
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
int a,b[11];//本来是b[10],为判断哪句越界,故意声明为b[11]
srand((unsigned int)time(NULL));//按两次F11,等黄色右箭头指向本行时,调试、新建断点、新建数据断点,地址:&b[10],字节计数:4,确定。
while (1) {//按F5,会停在下面某句,此时a的值为10,b[10]已经被修改为对应0..4之一。
b[(a=rand()%11)]=0;
Sleep(100);
b[(a=rand()%11)]=1;
Sleep(100);
b[(a=rand()%11)]=2;
Sleep(100);
b[(a=rand()%11)]=3;
Sleep(100);
b[(a=rand()%11)]=4;
Sleep(100);
}
return 0;
}
for (int i=0;i<row;i++)
{
int N=0;
for(int j=0;j<15;j++)
{
if (data[i][j]!=0)
N++;
j=j+2;
}
double** ab;
ab=(double **)malloc(sizeof(double)*N);
for(int p=0;p<N;p++)
ab[p]=(double*)malloc(3*sizeof(double));
double *dc=(double*)malloc(sizeof(double)*N);
int K=0;
for(int j=0;j<15;j++)
{
if (data[i][j]!=0)
{
ab[K][0]=data[i][j];
ab[K][1]=data[i][j+1];
ab[K][2]=1;
dc[K]=-data[i][j+2];
K++;
}
j=j+2;
}
……
……
for(int p=0;p<N;p++)
{free(ab[p]);ab[p]=NULL;}
free(ab);
for(int p=0;p<N;p++)
free(dc);
}
错误就发生在结尾处 double** ab;
ab=(double **)malloc(sizeof(double)*N);
for(int p=0;p<N;p++)
ab[p]=(double*)malloc(3*sizeof(double));
double *dc=(double*)malloc(sizeof(double)*N);
int K=0;
for(int j=0;j<15;j++)
{
if (data[i][j]!=0)
{
ab[K][0]=data[i][j];
ab[K][1]=data[i][j+1];
ab[K][2]=1;
dc[K]=-data[i][j+2];
K++;
}
j=j+2;
}