内存管理
来源:互联网 发布:applem2引擎完整源码 编辑:程序博客网 时间:2024/05/16 14:28
1、野指针,数组越界范围
1.1当一指针不再用是一定记得要让起指向NULL
1.2数组越界访问可能会导致非法访问的错误
2、堆、栈、静态区
2.1 堆是编译器留给程序员开辟的区域,malloc和new两函数。其生命周期有free和delete决定
2.2 栈是系统运行时保存局部变量,生命周期有函数自身决定,函数结束时销毁栈内存。不可以return 栈空间
2.3 静态区通常放置全局变量和static变量,整个程序的生命周期都存在
3、常见的内存错误及对策
3.1指针没有指向一块合法的内存
int *p;
*p =0;//错误,这里未给p指针赋值,p指向的是一个乱码(p =乱码),此时直接访问乱码对应的内存,系统会报错,无权访问
3.2 char p[] ="abc";
sizeof(p) = 4,因为p这个数组保存的一个字符串常量,在字符串常量末尾有\0字符,所以p共有4字节
char p[] ={a,b,c};//p保存的不是一个字符串常量,而是保存了字符,所以sizeof(p) =3
char *p = "abcde";//p是一指针,指向一个字符串常量,sizeof(p) = 4(p是一指针),strlen(p)=6(字符串长度)
char p[] = "abcde";//p是一个数组,保存一个字符串常量,sizeof(p) = 6(p是一数组名),strlen(p)=6(字符串长度)
4、内存泄露
malloc5要素:申请多大的内存,是否有足够的空间,做什么用,给谁,在哪里开辟?
free :free只是让系统重新获取该内存的使用权,但未清空内存的值。如free(p)后,p还是可以访问该内存,只是p不再有该内存所有权
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- Shell系列 - Mac OS X自动下载切换桌面壁纸
- 如何免费下载Youtube视频
- iOS屏幕(UIViewController)旋转的横竖屏
- Apache Thrift的简单使用
- Swift - 按钮(UIButton)的用法
- 内存管理
- Jquery鼠标点击后变色,点击另一个按钮颜色还原
- Go 语言循环语句
- Linux进程实践(4) --wait避免僵尸进程
- iOS退出程序的代码
- 轻量级分享框架源码与扩展说明
- 【IOS开发】webView的用法
- XML和son的数据解析
- Jboss eap 6.4 支持列表