C\C++语言指针的强大用法之减少内存申请次数
2017-11-18 17:10
127 查看
在我们编写程序时,可定会遇到下面比较复杂的结构体,结构体里面存在指针类型的结构,指针类型的结构又存在指针数据,这时候我们分配内存的时候自然而然会想到分配多次,同时还要释放多次,这样不但比较繁琐,而且效率也比较低。
下面我们举例
复杂结构体定义:
![](http://p1.pstatp.com/large/43570001da278792a022)
假设我们要定义一个Container类型的指针,并且含有一个Shape,此Shape有五个Point
传统我们的内存分配方式:
![](http://p1.pstatp.com/large/43580001de5413adf650)
新的方式,高效分配(一次分配)
![](http://p1.pstatp.com/large/435500020518cd07075b)
老方案的内存结构:
![](http://p9.pstatp.com/large/4354000216d2ce2a0b26)
新方案的内存结构:
![](http://p1.pstatp.com/large/435900007141bea9e3b2)
明显新方案好些,只需要一次申请,释放的时候也只需要一次,而老方案需要多次释放,很容易遗忘,导致内存泄露!
原文链接:http://www.uptoday.net/articles/2017/11/18/1510996082348.html
下面我们举例
复杂结构体定义:
假设我们要定义一个Container类型的指针,并且含有一个Shape,此Shape有五个Point
传统我们的内存分配方式:
新的方式,高效分配(一次分配)
老方案的内存结构:
新方案的内存结构:
明显新方案好些,只需要一次申请,释放的时候也只需要一次,而老方案需要多次释放,很容易遗忘,导致内存泄露!
原文链接:http://www.uptoday.net/articles/2017/11/18/1510996082348.html
相关文章推荐
- C++语言中用指针申请内存时产生的问题。
- 【VS开发】【C/C++开发】传递双重指针申请内存,典型用法
- 传递双重指针申请内存,典型用法
- C\C++语言指针的强大用法之数组当作指针使用
- realloc 减少指针指向的内存
- #define ROUND(x,y) (((x)+(y-1))&~(y-1))申请内存空间时,为了减少内存碎片
- 结构体申请内存错误 传递了一个指针的拷贝
- 指针作为函数的参数,则不能用此申请内存
- 如何使用指针去申请内存
- C++不能在栈上申请动态内存,而只能依靠指针
- C指针申请内存
- 内存申请与一级二级指针
- 用指针参数去申请内存
- 内存申请与一级二级指针
- 指针作为函数参数,申请内存
- C语言创建链表错误之通过指针参数申请动态内存实例分析
- C语言基础之函数、虚拟键盘的使用、数组、指针、动态申请内存、内存泄漏
- 指针,变量的生存期及作用范围,良好的动态内存申请和释放习惯
- 从单链表创建中的内存变化来理解结构体指针与二级指针的用法
- malloc和free(3)——malloc()申请内存得到指针,通过memcpy()拷贝数据到指针所指内存,指针没有改变,调用free()释放内存不会报错