本文来自http://www.codeproject.com/useritems/pointertopointer.asp一文,有感作者对指向指针的指针有着清晰和形象的解释,特将其重要思想摘记下来。

指向指针的指针变量

      一个指向指针的指针变量能够保存另一个指针变量的地址。可以用如下声明:

type **variable ;

分配内存

     可以把分配给指向指针的指针变量的内存视为二维结构。它有这相关的行和列。例如,对与大小为m*n的内存,视为有m行,而每行又有这n列。因此,分配内存时:

1.首先为m行分配内存

2.对每一行再分配n列内存

例子:为一个指向浮点数的指针的指针分配内存,假设有4行3列

float **float_values ;

//为行分配变量

float_values=(float **)malloc(4*sizeof(float *));

//为每行的列非陪内存

for(int i =0 ;i<4 ;i++)

{

*(float_values+i)=(float*)malloc(3*sizeof(float));

}

赋值     

有两种方法访问二维的内存地址:

1.用[]操作符,类似与访问二维数组:

for(int i=0; i< 4 ;i++)

for(int j=0 ;j<3 ;j++)

{

scanf("%f",&val);

float_values[i][j]=val;

}

2.指针操作符(*)

for(int i=0; i< 4 ;i++)

for(int j=0 ;j<3 ;j++)

{

scanf("%f",&val);

*((*float_values+i)+j)=val;

}

释放内存

     对于动态分配的内存,我们需要将其释放。释放要从最底层开始,和分配是顺序刚好相反。如果我们先释放了高层的指针,这样我们就会丢失底层的指针,从而无法释放那些指针指向的内存,造成内存泄漏。正确的释放内存方法如下:

//freeing up memoryallocated to second level pointers
    for(int i = 0; i<4; i++)
     {
           free(float_values[i]);
     }
 
    //freeing up memoryallocated to first level pointers
     free(float_values);

指向指针的指针的内存分配 author:Rajesh R Nair.相关推荐

  1. C语言——指针篇(二)指针和数组之内存分配和初始化

    前言:在上一篇文章中说到了指针变量和普通变量的区别,那么这一篇文章中就来说说指针和数组的关联和区别,它们在很多应用场合中可以互相取代,但也在很多场合中有着自己的无法替代的作用和地位. 数组和指针的内存 ...

  2. 内存泄漏的原因及解决办法_编程基础 | C++片段 指针、多态和内存分配

    本片段将介绍运行期而不是编译期的内存分配 1.变量的内存分配和方法的前期绑定 函数中声明的局部变量与其参数以及簿记数据一起被放置在一个活动记录中.活动记录存储在名为运行期栈(run-time stac ...

  3. 手绘知识点——指针运算变量的内存分配原理

    九月的最后一天,首先祝我们的祖国生日快乐,让我们继续砥砺前行-- 来到了指针系列的第三篇,我们来说说指针的运算以及变量在内存中的存储问题,重点在于后者. 首先看一下指针的算术运算: int a = 1 ...

  4. 3. 对象创建与内存分配机制

    对象的创建过程 1. 类加载检查 虚拟机遇到new指令的时候,首先去检查这个指令的参数能否在常量池中定位到一个符号引用,并检查这个符号引用所代表的类是否已被加载.解析和初始化过.如果没有,则执行相应的 ...

  5. 在Linux内核模块中使用CMA内存分配

    在Linux内核模块中使用CMA内存分配 前言 1. 什么是CMA? 2. CMA使用前的准备 2.1 内核配置选项 2.2 内核启动参数 2.3 CMA操作接口 3. 在内核模块中使用 3.1 模块 ...

  6. 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

    . Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...

  7. 【小白学习C++ 教程】十、C++中指针和内存分配

    @Author:Runsen 指针 指针是保存内存位置地址的变量.我们知道声明的所有变量在内存中都有一个特定的地址.声明一个指针变量来指向内存中的这些地址. 声明指针变量的一般语法是: int p, ...

  8. C语言 内存分配 地址 指针 数组 参数 解析

    指针简介 : 指针式保存变量地址的变量; -- 增加阅读难度 : 指针 和 goto 语句会增加程序的理解难度, 容易出现错误; -- ANSI C : American National Stand ...

  9. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 1 2 3 4 5 6 ...

最新文章

  1. 如何做一个流畅的UI 组内分享记录
  2. Strange Partition CodeForces - 1471A
  3. 用g++编译生成动态连接库*.so的方法及连接
  4. 赛锐信息-AMS系列产品简介
  5. 使用单元测试工具TestDriven.NET调试程序
  6. java http服务 Tomcat_【求教】用JAVA写HTTP服务器代替TOMCAT 我代码哪错了。。
  7. verilog 用逻辑门实现四选一数据选择器
  8. 1992-2021合集 全国大学生数学建模竞赛 国赛历年赛题 题目
  9. 机器人学导论 一、空间变换(1)位姿,变换
  10. EM算法系列--原理
  11. 【webssh】网页上的SSH终端
  12. iOS开发之颜色渐变
  13. 软件工程考研笔记整理(三小时速成)(1)
  14. PyTorch实践系列(二):GPU与CPU运行对比
  15. 永川机器人博览会门票_14日 又到永川来看机器人哦
  16. SAGAN——Self-Attention Generative Adversarial Networks
  17. DPC_WATCHDOG_VIOLATION蓝屏分析
  18. 联想x3850x6从u盘引导_联想扬天T4900v进入bios中设置legacy和uefi两种引导模式U盘启动教程...
  19. 八皇后问题理解与解决
  20. java-php-python-ssm试卷审批系统计算机毕业设计

热门文章

  1. 使用ffmpeg拼接两张图片
  2. 计算机无法识别无线USB网卡,我电脑一开机就无法识别usb无线网卡怎么办? 爱问知识人...
  3. [项目部署]宝塔部署项目
  4. 为什么黑客都用python-为什么黑客都用Python
  5. 完全小白篇-用python爬取豆瓣电影影评
  6. matlab中符号运算求解结果出现的是1i不是li
  7. 谈谈准确率(P值)、召回率(R值)及F值
  8. 动态插入,动态更新,type类型
  9. 大集合是什么?(修改版)
  10. maven 一览众山小