我只是想出於好奇。我有一個構造函數和一個拷貝構造函數的結構,並嘗試使用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