小编kra*_*101的帖子

C++:静态指针、静态对象和动态内存分配

考虑以下代码段:

#include <iostream>
using namespace std;

class p
{
    public:
    int* q;
    p()
    {
        q = new int(100);
    }
    ~p(){
        delete q;
    }
};

static p* p1 = new p();
static p p2;

int main() {
    // your code goes here
    std::cout << *(p1->q);
    std::cout << *(p2.q);

    delete p1;
}
Run Code Online (Sandbox Code Playgroud)

p1 和 p2 是静态变量,它们必须存储在静态段中。

  1. 由于 p1 是一个指针,那么是否只是存储在静态段中的指针地址,甚至是它指向的对象?

  2. p2 是一个普通的静态对象,但是它包含一个动态分配的成员变量 q,那么 q 是否也存储在静态段中?

c++ pointers static-members dynamic-memory-allocation

0
推荐指数
1
解决办法
4520
查看次数