當我嘗試釋放我的循環緩衝區時,出現斷言錯誤(表達式:crtisvalidheappointer)。這是爲什麼發生?不能釋放內存(斷言錯誤)
相關結構:
的代碼typedef struct quote {
unsigned int seconds;
double rate;
} quote;
typedef struct cbuf {
unsigned int max;
unsigned int start;
unsigned int end;
unsigned int size;
quote *quotes;
} cbuf;
塊是mallocs並釋放:
#define INITIAL_SIZE 10
static cbuf cb1 = {INITIAL_SIZE, 0, 0, 0, NULL};
cb1.quotes = (quote*)malloc(INITIAL_SIZE * sizeof(quote));
if(cb1.quotes == NULL)
{
printf("Error - memory allocation failed.");
exit(1);
}
free(&cb1);
你釋放一個局部堆棧變量。 SideNote:在編程時不要強制使用'malloc()'。這是一種壞習慣。 – WhozCraig 2013-04-03 20:02:08
你想'免費(&(cb1.quotes))'因爲'cb1.quotes'就是你分配的內存 – maditya 2013-04-03 20:02:27