我最近看到一篇文章提到C/C++中的空指针实际上不是简单的零,而是由编译器解释为平台的任何分配地址为空。C++什么是空指针值?
https://stackoverflow.com/a/2760172/2027262
这东西绑在我在Visual Studio中,其中一个指针的值0xCACACACA(或类似的东西),当它是一个糟糕的指针调试C++时看到(但这可能只是显示的值我们的利益)。
所以长话短说,一个平台(比如windows)的REAL空指针地址是什么?还是我完全误解了答案?
编辑:
另外,(只是作为一个扩展名)是什么做的?
int i = 0;
// pretend to do some stuff with i
char* = (char*)i;
编译器会在运行时将指针设置为null还是将其设置为零?如果它是后者是UB?它会打破这个计划吗?
你在找什么样的答案?一个列表? – Niko
您可以阅读:http://c-faq.com/null/machnon0.html – jxh
您说的NULL实际上是依赖于实现的。检查为c + +和为C.但在c/c + +模型中,你可以认为NULL为0. –