C++中指针
来源:互联网 发布:古墓丽影崛起优化 编辑:程序博客网 时间:2024/05/16 09:31
因为我们是分配一个阵列,C++知道应使用新的而不是新的标量版阵列版。从本质上讲,新的运营商称为[ ],[ ]即使不放在旁边的新关键字。
当删除动态分配的数组,我们不得不使用阵列版本删除,并删除[ ]。这会告诉CPU,需要清理的多变量而不是一个单一的变量。
值得注意的是,数组的访问做同样的方式与动态分配的数组与普通数组。虽然这看起来有点滑稽,因为pnarray显式声明为指针,记住阵列是真的只是在C++中指针吧。
最常见的一个错误就是新的程序员在处理动态内存分配是使用删除而不是删除[ ]当删除动态分配的数组。不这样做!使用标量版本的阵列上的删除会导致数据损坏或其它问题。
内存泄漏
动态分配的内存实际上没有范围。那是,它保持分配直到显式释放或直到程序结束。然而,指针用于访问动态内存分配遵循正态变量的作用域规则。这种不匹配可以创造出有趣的问题。
考虑下面的函数:
1234void doSomething(){ int *pnValue = new int;}
此函数分配一个整数动态,但从来没有让它使用删除。因为指针遵循正态变量,函数结束时,pnvalue将超出范围。因为pnvalue是唯一的变量的动态分配的整数地址,当pnvalue破坏没有指向动态分配的内存。这就是所谓的内存泄漏。作为一个结果,动态分配的整数不能删除,从而不能被重新分配或重新。内存泄漏吃免费的内存运行程序时,使更少的内存不仅可以对这一计划,但其他的程序以及。严重的内存泄漏问题的方案,可以吃所有可用的内存,导致整个机器运行缓慢甚至崩溃。
内存泄漏也如果指针的动态分配的内存地址重新分配到另一个值的结果:
123int nValue = 5;int *pnValue = new int;pnValue = &nValue; // old address lost, memory leak results
0 0
- c中指针的指针
- C中指针问题
- c语言中指针
- C中指针使用
- C中指针const
- c中指针数组
- c/c++中指针
- C语言中指针
- C++/C中指针详解
- C中复杂指针声明
- C中数组与指针
- c/c++中指针总结
- C程序中函数指针
- c语言中指针概念
- C/C++中函数指针
- C语言中指针学习
- C函数中指针参数
- C语言中指针剖析
- XMPP
- Android 中的 Service 全面总结
- poj1029
- ARM学习笔记&思考_20140810
- Oracle中rowid与rownum的使用
- C++中指针
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 骡 子 的 哲 学 (转 载)
- Orange's 自己动手写操作系统 第一章 十分钟完成的操作系统 U盘启动 全记录
- 自己的学习总结
- MVC学习——M/V/C分工模式
- UVA301
- Linux rpm详解
- Enabling Unit Testing In Android Studio