删除指向指针C++的指针

Delete a pointer to a pointer C++

本文关键字:指针 C++ 删除      更新时间:2023-10-16

我有一个问题:

有一个指针:double **p = 0;我必须这样做:任务

这是正确的吗?

int main {
    double **p = new double*; 
    double value = 2;
    double *index = new double; 
    index = &value; 
    p = &index; 
    p = new double*;
    index = new double;
    delete p;
    delete index; 
    return 0;
}

我的操作假设您只是出于教育目的使用指针,没有计划将此代码用于任何重要的事情。如果你打算使用这个,停下来重新思考你的算法。几乎可以肯定的是,不需要如此动态的分配和指针游戏。

逐行浏览代码:

01 double **p = new double*; // OK
02 double value = 2;
03 double *index = new double; // OK
04 index = &value; // BAD. memory leak. Lost pointer to the allocation from 03
05 p = &index; // BAD. memory leak. Lost pointer to the allocation from 01
06 p = new double*; // OK. pointer to local overwritten, and local will self-destruct
07 index = new double; // OK. pointer to local overwritten
08 delete p; // OK. deletes allocation from 06 
09 delete index; // OK. deletes allocation from 07
10 return 0;

编辑

刚刚注意到问题陈述的链接。你应该让这一点更加明显。你只需要:

double value = 2;
double * valuep = &value;
double ** p = &valuep;

根据列侬和麦卡特尼的说法,这就是爱。