幫助我理解malloc的行爲..我的代碼如下::malloc分配內存和SIGSEGV
int main()
{
int *ptr=NULL;
ptr=(int *)malloc(1);
//check for malloc
*ptr=1000;
printf("address of ptr is %p and value of ptr is %d\n",ptr,*ptr);
return 0;
}
上述程序工作正常(無差錯運行)...怎麼樣?因爲我只提供了1個字節的值1000!
我是否覆蓋堆中的下一個內存地址? 如果是,那麼爲什麼不sigsgev在那裏?
的行爲是不確定的,整個事情,所以它可能會或可能不會崩潰。在某些實現中,當你釋放(ptr)時,程序會崩潰。 – 2012-02-09 13:02:09
它需要用包裝做點什麼嗎?通常使用32位應用程序進行4字節的默認打包。 – 2012-02-09 13:02:22