帮助我理解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