c 深度剖析 5
2014-05-03 20:56
148 查看
1,指针没有指向一块合法的区域
1指针没有初始化
ssa 定义时 只给 pa指针分配了内存,内存没有初始化,指针指向的地址是随机的(全局变量自动初始化为0 ,局部变量不初始化,为随机值)。
malloc 只给 ssb 初始化了,没有给 pa初始化。
故访问指针指向的地址时会出现错误。
必须对指针进行初始化
2,没有分配足够的空间
书上说的例子好像不太对。
结构体为指针加char 按照4字节对齐需要8字节的空间。
malloc了4个字节的空间,依然可以访问。
书上的例子的错误是结构体内的指针没有初始化,而不是空间分配太小。
但是从规范上来说应该:
3.
不知道是编译器不符合规范还是其他原因。依旧不会出错。
4 数组越界
GCC对数组越界不进行任何处理,没有错误警告。
5 内存泄漏
内存要及时 free
6 内存释放
1。free后依然可以通过指针变量访问内存,要将 指针变量 p=NULL
2.在子函数中内部定义了一个数组,函数返回数组的指针。子函数中定义的数组,在函数返回时会自动销毁,返回的指针指向数组的内存,
3,内存使用太复杂,不知道那块已释放,那块未释放。
来自为知笔记(Wiz)
1指针没有初始化
malloc 只给 ssb 初始化了,没有给 pa初始化。
故访问指针指向的地址时会出现错误。
必须对指针进行初始化
结构体为指针加char 按照4字节对齐需要8字节的空间。
malloc了4个字节的空间,依然可以访问。
书上的例子的错误是结构体内的指针没有初始化,而不是空间分配太小。
但是从规范上来说应该:
不知道是编译器不符合规范还是其他原因。依旧不会出错。
4 数组越界
5 内存泄漏
内存要及时 free
6 内存释放
1。free后依然可以通过指针变量访问内存,要将 指针变量 p=NULL
2.在子函数中内部定义了一个数组,函数返回数组的指针。子函数中定义的数组,在函数返回时会自动销毁,返回的指针指向数组的内存,
3,内存使用太复杂,不知道那块已释放,那块未释放。
来自为知笔记(Wiz)
相关文章推荐
- Hadoop作业提交深度剖析
- 深度剖析Byteart Retail案例:AOP - 异常处理与缓存
- 读c语言深度剖析 -- typedef小结
- C语言深度剖析--读书笔记4_signed/unsigned关键字
- 学JS必看-JavaScript数据结构深度剖析
- C#学习笔记第四篇之Equals,GetHashCode ,ToString函数深度剖析(二)
- 读c语言深度剖析 -- typedef小结(3) 定义结构体
- 深度剖析:企业到底需要什么样的管理软件?
- 译见|深度剖析「微服务架构」的九大特征
- 深度剖析CloudFoundry的架构设计
- libevent源码深度剖析
- Java之hashCode与equals深度剖析与源码详解
- SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践
- 深度剖析Linux与Windows系统的区别
- ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求
- 深度剖析ConcurrentHashMap
- Android之线程池深度剖析
- C语言深度剖析
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- Session和Cookie深度剖析