这个问题在这里已经有了答案:Whatisthefunctionofthisstatement*(long*)0=0;?(4个答案)关闭8年前。我刚刚在代码中看到以下行:#defineERR_FATAL(str,a,b,c){while(1){*(unsignedint*)0=0xdeadbeef;}}我知道0xdeadbeef表示错误,但是将这个值放在地址0中意味着什么?0代表什么地址?
这个问题在这里已经有了答案:Whatisthefunctionofthisstatement*(long*)0=0;?(4个答案)关闭8年前。我刚刚在代码中看到以下行:#defineERR_FATAL(str,a,b,c){while(1){*(unsignedint*)0=0xdeadbeef;}}我知道0xdeadbeef表示错误,但是将这个值放在地址0中意味着什么?0代表什么地址?
用于32位系统的C++开发(无论是Linux,MacOS或window,PowerPC或x86)我已经初始化了指针否则将是未定义的(例如,他们不能立即得到一个合适的值)像这样:int*pInt=reinterpret_cast(0xDEADBEEF);(为了节省输入和成为DRY右侧通常会保持不变,例如BAD_PTR。)如果pInt在获得正确值之前被取消引用,那么它会在大多数系统上立即崩溃(而不是当某些内存被覆盖或消失时,会在很久以后崩溃进入一个很长的循环)。当然,行为取决于底层硬件(从奇数中获取4字节整数来自用户进程的地址0xDEADBEEF可能是完美的有效),但是对于所有的崩溃都是1
在各种代码中,我在调试版本中看到了内存分配NULL...memset(ptr,NULL,size);或者用0xDEADBEEF...memset(ptr,0xDEADBEEF,size);使用每种方法有哪些优势,在C/C++中实现这一点的一般首选方法是什么?如果一个指针被赋值为0xDEADBEEF,它就不能仍然遵循有效数据吗? 最佳答案 使用memset(ptr,NULL,size)或memset(ptr,0xDEADBEEF,size)清楚地表明了作者这样做的事实不明白他们在做什么。首先,如果NULL被定义为整数零,memset(
在各种代码中,我在调试版本中看到了内存分配NULL...memset(ptr,NULL,size);或者用0xDEADBEEF...memset(ptr,0xDEADBEEF,size);使用每种方法有哪些优势,在C/C++中实现这一点的一般首选方法是什么?如果一个指针被赋值为0xDEADBEEF,它就不能仍然遵循有效数据吗? 最佳答案 使用memset(ptr,NULL,size)或memset(ptr,0xDEADBEEF,size)清楚地表明了作者这样做的事实不明白他们在做什么。首先,如果NULL被定义为整数零,memset(