weixin_44387682 2021-04-30 09:55 采纳率: 0%
浏览 269

报错说我使用了未初始化的内存是怎么回事

0xC0000005: 写入位置 0xCDCDCDCD 时发生访问冲突。 系统提示我使用了未初始化的内存,但是我定义的动态二维数组不都初始化了吗。还有个问题就是我子函数里申请的动态内存在哪里free掉呢。

void ScanLineSegment(double **a, int m)
{
	double **p;
	p = (double **)malloc(sizeof(double *) * m);
	for (i = 0; i < m; i++)
		p[i] = (double *)malloc(sizeof(double) * 2);
	for (int i = 0; i < m; i = i + 2) {
		p[i][0] = a[i][0];
		p[i][1] = a[i][1] * 1024;
		p[i + 1][0] = a[i + 1][0];
		p[i + 1][1] = a[i + 1][1] * 1024;
	}//将坐标映射到窗口坐标上

	double d = 40;//定义条纹的宽度
	double k, dx, dy;

	int **coordinate;
	coordinate = (int **)malloc(sizeof(int *) * (m / 4));
	for (i = 0; i < m; i++)
		coordinate[i] = (int *)malloc(sizeof(int) * 8);
	for (j = 0; j < L; j = j + 4) {
		k = (p[j][1] - p[j + 2][1]) / (p[j + 3][1] - p[j + 1][1]);
		dx = d / (sqrt(k*k + 1)) / 2;
		dy = dx*k;
		coordinate[j / 4][0] = (int)(p[j][1] - dx + 0.5);
		coordinate[j / 4][1] = (int)(p[j + 1][1] - dy + 0.5);
		coordinate[j / 4][2] = (int)(p[j][1] + dx + 0.5);
		coordinate[j / 4][3] = (int)(p[j + 1][1] + dy + 0.5);
		coordinate[j / 4][4] = (int)(p[j + 2][1] + dx + 0.5);
		coordinate[j / 4][5] = (int)(p[j + 3][1] + dy + 0.5);
		coordinate[j / 4][6] = (int)(p[j + 2][1] - dx + 0.5);
		coordinate[j / 4][7] = (int)(p[j + 3][1] - dy + 0.5);
	}
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(0.0, 0.0, 0.0);
	glBegin(GL_POINTS);
	Point **spt;
	spt = (Point **)malloc(sizeof(Point *) * (m / 4));
	for (i = 0; i<4; i++) {
		spt[i] = (Point *)malloc(sizeof(Point) * 5);
	}
	for (i = 0; i < m / 4; i++) {
		for (j = 0; j < 8; j = j + 2) {
			spt[i][j / 2] = Point(coordinate[i][j], coordinate[i][j + 1]);
		}
		spt[i][4] = spt[i][0];
		ScanLine(spt[i], 5);
	}
	glEnd();
	glFlush();
}
void display() {
	double **a;
	int m = L;
	a = (double **)malloc(sizeof(double *) * m);
	for (i = 0; i < m; i++)
		a[i] = (double *)malloc(sizeof(double) * 2);
	for (i = 0; i<m; i++) {
		for (j = 0; j<2; j++) {
			a[i][j] = linepoint[i][j];
		}
	}
	ScanLineSegment(a, m);
}
  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2021-04-30 10:11
    关注

    vs打个断点debug一下吧,按f10单步执行看下哪句报错,这么直接看代码也看不出来问题在哪里,需要定位到那一句出的问题才知道原因。

    评论

报告相同问题?

悬赏问题

  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上