删除指向指针C++的指针
Delete a pointer to a pointer C++
我有一个问题:
有一个指针: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;
根据列侬和麦卡特尼的说法,这就是爱。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错