建立含有图像变量的结构体的链表

1

我写一个画像素画的程序, 想用链表来保存各个图层的图像, 这样增加删除图层, 改变图层顺序都比较方便.

但是我像下面那样用malloc申请到的图片操作不了, 对它绘画和改尺寸都会报错.

0x002A140E 处有未经处理的异常(在 sy1.exe 中) :0xC0000005 : 读取位置 0xCDCDCDD5 时发生访问冲突。

请问有什么方法可以建立含有图像变量的链表吗 ?

//win10  vs2019  C++

#include <graphics.h>
#include <conio.h>
#include<stdlib.h>
#include<malloc.h>


typedef struct layers		//定义 图层 结构体
{
	IMAGE img;
	int n;
	struct layers* next;
}Layer;

Layer* creatlayer(int n)		//创建第n个图层
{
	Layer* head = (Layer*)malloc(sizeof(Layer));
	head->n = n;
	head->next = 0;
	return head;
}

int main()
{
	initgraph(640, 480);

	Layer* layer;
	layer = creatlayer(1);		//创建一个图层

	SetWorkingImage(&layer->img);

	Resize(&layer->img, 400, 400);		//对创建的图层里的图片绘画或者改尺寸都会报错
	//0x002A140E 处有未经处理的异常(在 sy1.exe 中) :
	//0xC0000005 : 读取位置 0xCDCDCDD5 时发生访问冲突。
	
	_getch();	// 按任意键退出

	closegraph();
	return 0;
}
ava
超巨大巨龙

2022-2-12

0

申请内存用 new,不要用 malloc。

malloc 只是分配内存,不会调用对象的构造函数。而 new 在 malloc 的基础上,还会调用对象的构造函数。所以,可以用 new 完全替代 malloc。并且语法上,new 更简洁。

ava
慢羊羊

2022-2-12

感谢,改成new之后就可以了。 - 超巨大巨龙 2022-2-12
技术讨论社区