大约有1项符合查询结果,库内数据总量为27759项,搜索耗时:0.0066秒。

生产管理知识-C++内存管理详解(doc27)

C++内存管理详解 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解 决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容 比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式   内存分配方式有三种:   (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这 块内存在程序的整个运行期间都存在。例如全局变量,static 变量。   (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以 在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内 置于处理器的指令集中,效率很高,但是分配的内存容量有限。   (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放 内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。 2、常见的内存错误及其对策 发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是 在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增 加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问题, 你一走,错误又发作了。 常见的内存错误及其对策如下:   * 内存分配未成功,却使用了它。   编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用 解决办法是,在使用内存之前检查指针是否为 NULL。如果指针 p 是函数的参 数,那么在函数的入口处用 assert(p!=NULL)进行   检查。如果是用 malloc 或 new 来申请内存,应该用 if(p==NULL) 或 if(p!=NULL)进行防错处理。   * 内存分配虽然成功,但是尚未初始化就引用它。   犯这种错误主要有两个起因:一是没有初始化的观念;二是误以为内存 的缺省初值全为零,导致引用初值错误(例如数组)。内存的缺省初值究竟 是什么并没有统一的标准,尽管有些时候为零值,我们宁可信其无不可信其 有。所以无论用何种方式创建数组,都别忘了赋初值,即便是赋零值也不可 省略,不要嫌麻烦。   * 内存分配成功并且已经初始化,但操作越过了内存的边界。   例如在使用数组时经常发生下标“多 1”或者“少 1”的操作。特别是 在 for 循环语句中,循环次数很容易搞错,导致数组操作越界。

分类:安全管理制度 行业:其它行业 文件类型:Word 文件大小:75.5 KB 时间:2026-03-06 价格:¥2.00