我只是想出于好奇。我有一个构造函数和一个拷贝构造函数的结构,并尝试使用main中的拷贝构造函数初始化结构体,同时在主体中实现对指向结构体的指针的内存分配。复制构造初始化工作正常,但是当我尝试在主返回之前释放它时,它会在堆中导致断言错误。结构上的内存分配和复制构造函数
#include <stdio.h>
#include <malloc.h>
typedef struct tagInfo
{
int iX;
int iY;
tagInfo() {};
tagInfo(int x, int y)
: iX(x), iY(y) {};
~tagInfo() {};
}INFO;
int main (void)
{
INFO* pInfo = (INFO*)malloc(sizeof(INFO));
pInfo = &INFO(10, 10);
free(pInfo);
return 0;
}
如何安全地释放上述指针而不引起断言错误?
不要垃圾邮件的标签!这不是有效的C代码! – StoryTeller
看到它是C++,你应该使用'new' /'delete'。除此之外 - 存储一个临时的内存地址,然后使用它(在'free'中)是UB(永远不会释放malloc'ed空间来创建内存泄漏)。 –
通过将C习语混合到C++代码中,而没有清楚地理解其意义,您正在弄得一团糟。很好地学习C++的方法不是通过试验和错误,而是从底层开始,接近它,而没有以前学过的语言的偏见。 [选一本好书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)适合初学者,并一步一步接受。 – StoryTeller