c内存管理详解(doc27)-经营管理(编辑修改稿)内容摘要:
见示例。 char *GetMemory3(int num) { char *p = (char *)malloc(sizeof(char) * num)。 return p。 } void Test3(void) { char *str = NULL。 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) str = GetMemory3(100)。 strcpy(str, hello)。 cout str endl。 free(str)。 } 示例 用函数返回值来传递动态内存 用函数返回值来传递动态内存这种方法虽然好用,但是常常有人把 return语句用错了。 这里强调不要用 return 语句返回指向“栈内存”的指针,因为该内存在函数结束时自动消亡,见示例。 char *GetString(void) { char p[] = hello world。 return p。 // 编译器将提出警告 } void Test4(void) { char *str = NULL。 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) str = GetString()。 // str 的内容是垃圾 cout str endl。 } 示例 return 语句返回指向“栈内存”的指针 用调试器逐步跟踪 Test4,发现执行 str = GetString 语句后 str不再是 NULL指针,但是 str 的内容不是“ hello world”而是垃圾。 如果把示例 改写成示例 ,会怎么样。 char *GetString2(void) { char *p = hello world。 return p。 } void Test5(void) { char *str = NULL。 str = GetString2()。 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) cout str endl。 } 示例 return 语句返回常量字符串 函数 Test5 运行虽然不会出错,但是函数 GetString2 的设计概念却是错误的。 因为 GetString2 内的“ hello world” 是常量字符串,位于静态存储区,它在程序生命期内恒定不变。 无论什么时候调用 GetString2,它返回的始终是同一个“只读”的内存块。 杜绝“野指针” “ 野指针”不是 NULL 指针,是指向“垃圾”内存的指针。 人们一般不 会错用 NULL 指针,因为用 if 语句很容易判断。 但是“野指针”是很危险的, if语句对它不起作用。 “ 野指针”的成因主要有两种: ( 1)指针变量没有被初始化。 任何指针变量刚被创建时不会自动成为NULL 指针,它的缺省值是随机的,它会乱指一气。 所以,指针变量在创建的 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) 同时应当被初始化,要么将指针设置为 NULL,要么让它指向合法的内存。 例如 char *p = NULL。 char *str = (char *) malloc(100)。 ( 2)指针 p 被 free 或者 delete 之后,没有置为 NULL, 让人误以为 p是个合法的指针。 ( 3)指针操作超越了变量的作用范围。 这种情况让人防不胜防,示例程序如下: class A { public: void Func(void){ cout “Func of class A” endl。 } }。 void Test(void) 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) { A *p。 { A a。 p = amp。 a。 // 注意 a 的生命期 } pFunc()。 // p 是“野指针” } 函数 Test 在执行语句 pFunc()时,对象 a 已经消失,而 p 是指向 a的,所以 p 就成了“野指针”。 但奇怪的是我运行这个程序时居然没有出错,这可能与编译器有关。 有了 malloc/free 为什么还要 new/delete。 malloc 与 free是 C++/C语言的标准库函数, new/delete 是 C++的运算符。 它们都可用于申请动态内存和释放内存。 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) 对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。 对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。 由于 malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于 malloc/free。 因此 C++语言需要一个能完成动态内存分配和初始化工作的运算符 new,以及一个能完成清理与释放内存工作的运算符 delete。 注意 new/delete 不是库函数。 我们先看一看 malloc/free 和 new/delete如何实现对象的动态内存管理,见示例 6。 class Obj { public : Obj(void){。c内存管理详解(doc27)-经营管理(编辑修改稿)
相关推荐
ess TCT Mindset: Seamless Business Processes Market Introduction Production Product Concept Design Prototype Test Marketing Engineering Manufacturing Finance and Administration Concrete Ceiling
》 和 M9QRC09A1D1《 模具档案 》由模具管理员 统一保管。 模具费报销 模具费报销时应由模具管理员出具《模具购买申请表》、《模具验收单》,经制造部长审核,报请总经理审批后 ,履行报销手续。 模具领用 模具验收合格后,模具管理员通知 申请 购买部门领用模具,领用部门在 《模具验收单》 备注栏中填写领用时间并签字。 模具日常保养、维护、损失 处理 库房模具由设备动力课负责保养
成感染 ,就应禁止他们进入食品加工 中国最大的管理资料下载中心 (收集 \整理 . 部分版权归原作者所有 ) 处理区。 任何上述人员都应立即向有关管理部门报告疾病或疾病症状。 如果食品操作人员出现临床或流行性疾病征兆时 ,就应进行医疗检查。 疾病或受伤 工作人员的疾病或受伤情况应向有关管 理部门报告以便进行必要的医疗检查或者考虑将其调离与食品处理有关的岗位。 应报告的情况包括 : 黄瘟; 腹泻;
Brain Storming 整理问 题,找出 重点问题 会后 评价 从明确问题到会后评价,头脑风暴法有三个阶段 介绍问题 如组员感到困惑,可做一简单练习 指定一人在看板记录所有见解 鼓励组员自由提出见解 会后以鉴别的眼光讨论所有列出的见解 也可以让另一组人来评价 明确阐述问题 主持人在看板上记录 小组成员提出见解 会后评价 头脑风暴法的实施步骤 无组织的头脑风暴法 •
股东 ) 、支配者 ( 董事 ) 、经营者 ( 经理 ) 、使用者 ( 雇员 ) 的相互权力、利益和责任,健全决策、执行和监督体系,保证决策程序规范化、经营责任法律化、杜绝“内部人控制”现象,从而求得运作成本最低而效益最大化,并保证诸方面利益均衡,以实现效率与公平的和谐统一。 人员编制 公司共计员工 312 人,其中专业技术人员 253 人,大专以上学历 301 人,其中博士 以上51 名,
致 应有规律的评审规范以确保它的正确性和状态 程序 文件 公司应按照书面详细的程序、指导书和参考文件来运作以覆盖所有对产品安全、合法性和质量有关的关键过程。 要求 程序和指导书应清楚、易懂、详尽以便使相关人员能够正确的应用,并且应随时能够获得相关文件 记录保持 企业应保持记录以证明产品安全、合法性和质量得到有效控制 要求 记录要真实、清晰、得到授权并且在一个规定的时间段里妥善保存