【发布时间】:2023-01-22 22:07:07
【问题描述】:
有人可以告诉我这两个陈述之间的区别吗?
1.
int *p;
cout << &p << endl;
和
2.
int *p = new int();
cout << &p << endl;
第一条语句引发异常
抛出异常:读取访问冲突。
p 是 0xFFFFFFFFFFFFFFFF。
而另一条语句为指针分配地址。
哪个主题会更详细地解释这个概念?
【问题讨论】:
-
也不应该崩溃。
-
这两个例子都不应该崩溃。请发一个minimal reproducible example
-
你使用什么编译器?即使在使用 AddressSanitizer 时,它也是 4 个最常见的 works fine。
-
也许您在引用的示例之后使用了
p,因为在#1 中,p指针未指向您不能使用的任何有效内存*p -
提供的 sn-p 无法编译。它缺少头文件。它具有不在函数上下文中的语句。所描述的错误很可能是由于未提供代码中的某些内容造成的。