【问题标题】:Initializing a pointer and memory in C++ [closed]在 C++ 中初始化指针和内存[关闭]
【发布时间】: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 无法编译。它缺少头文件。它具有不在函数上下文中的语句。所描述的错误很可能是由于未提供代码中的某些内容造成的。

标签: c++ pointers memory


【解决方案1】:

您发布的两段代码之间没有区别。它们都必须正确运行。要么您错误地运行了您在此处发布的代码以外的代码,要么您的系统出现故障(极不可能!)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-09-10
    • 2015-12-12
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多