C++ new 运算符分配新内存

标签 c++ dynamic-memory-allocation

我正在运行一个小程序来娱乐,并遇到了一个令我困惑的问题。

#include <iostream>
#include <string>

using namespace std;

struct T
{
    int val;
};
int main()
{
    for(int i = 0; i < 2; ++i)
    {
        T *p = new T;
        cout << p << endl;
        delete p;
    }

    T *q = new T;
    cout << q << endl;
    delete q;

    return 0;
}

输出:

0x16b76d0
0x16b76d0
0x16b76d0

它们都在同一个内存位置吗?

最佳答案

打印地址后您将删除内存。然后内存管理器可以自由选择相同的地址来分配新的内存。

关于C++ new 运算符分配新内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433354/

相关文章:

c# - 我无法使用 MemoryStream 将 C++ memcpy 代码转换为 C#

c++ - 在 C++ 中将数字转换为英文(1-99)

没有指针的 C++ 多态性

C - 矩阵乘法分割错误

c++ - 对由指针组成的结构数组进行排序时出现段错误

c - c中的内存重新分配

c++ - Qt5 lambda 连接内存泄漏的新信号

c++ - 如何在 C++ 中生成随机数?

c++ - 判断两个数是否为 "almost equal"并输出结果

c - 动态内存访问仅在函数内部有效