设为首页 加入收藏

TOP

第3章 说一说“内存管理”的那点事儿
2013-10-07 14:48:31 来源: 作者: 【 】 浏览:80
Tags:内存 管理 那点 事儿

第3章 说一说“内存管理”的那点事儿

C++(www.cppentry.com)的世界里,“烫”和“屯”是我们遇到得最多的两个汉字(限于VC用户)。可能有人不禁要问:这是为什么呢?

答案是:在VC中,栈空间未初始化的字符默认是-52,补码是0xCC。两个0xCC ,即0xCCCC在GBK编码中就是“烫”;堆空间未初始化的字符默认是-51,两个-51在GBK编码中就是“屯”。 二者都是未初始化的内存。

C++(www.cppentry.com)赋予了我们直接面对内存、操作内存的能力,但是内存管理却一直以来被认为是C++(www.cppentry.com)语言的一大难点。因为在C++(www.cppentry.com)语言中,缺少GC(垃圾回收器),内存管理需要程序员手动完成,并且还要为可能的失误承担后果。

正如下面的“代码故事”:

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3.  
  4. /*  
  5.    在经历过无数的"烫烫烫烫烫","屯屯屯屯屯屯"之后,  
  6.    我们都知道了:内存原来是可以驾驭的...  
  7. */  
  8.  
  9. int main()  
  10. {  
  11.    /*  
  12.       原来内存管理是这样的,即便结果完美无缺,  
  13.       但却危机四伏...  
  14.    */  
  15.    const char *src="Hello Csdn!";  
  16.    char *dest=(char*) malloc(strlen(src));  
  17.    memcpy(dest,src,strlen(src)+1);  
  18.    printf("%s\n",dest);  
  19.  
  20.    return 0;  
  21. }  
  22. /*  
  23.   代码结束了,故事也到此为止。但是我们要做的还很多。  
  24.   希望我们能少遇到一点烫和屯...  
  25. */ 

所以,我们要说说内存管理那点事儿,争取早日练就内存管理的高深技艺。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇建议25:尽量用const、enum、inli.. 下一篇建议26:用引用代替指针(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: