当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 摘要:内存管理向来是C/C++java/j2me/code/ target=_blank>程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。
 

 

 ·读《efficient c++》疑惑    »显示摘要«
    摘要: 当我们进行软件开发时,如果代码比较少,我们可以很容易的掌握、了解程序的执行情况,但是当代码超过数千行,特别是达到上万行的时候,我们就很难准确掌握程序的流程,在这种情况下,进行代码跟踪是很重要的一件事情。 代码跟踪技术,对于大多数程序员来讲,就是定义一个比较简单的trace类,将程序的信息进行输出,一般是在程序的入口写一条信息,在程序的出口写一条信息,虽然这是以时间性能为代价,但是它有助于我们在......
 ·book    »显示摘要«
    摘要: 《learning standard c++ as a new language》《将标准c++视为一个新语言》 《thinking in c++》 《c++ 编程想》 《the c++ programming language》《inside the c++ object model》《c++java/j2me/code/ target=_blank>程序设计语言》《深度探索c++对象模型......


“瑜珈山夜话” ----内存分配(一)

       摘要:内存管理向来是c/c++java/j2me/code/ target=_blank>程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它.虽然利用c++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序.

    在c++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区与常量存储区. 【程序编程相关:新发现: Foxmail4.2版本一致命

    五大内存分区 【推荐阅读:COM组件的多线程测试-Apartmen

    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收. 【扩展信息:VC中基于CEditView的打印和打印

    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量.函数参数等.

    自由存储区,就是那些由malloc等分配的内存块,他与堆是十分相似的,不过它是用free来结束自己的生命的.

    全局/静态存储区,全局变量与静态变量被分配到同一块内存中,在以前的c语言中,全局变量又分为初始化的与未初始化的,在c++里面没有这个区分了,他们共同占用同一块内存区.

    常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多,在«const的思考»一文中,我给出了6种方法)

   

    明确区分堆与栈

    在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀.

    首先,我们举一个例子:

    void f() { int* p=new int[5]; }

    这条短短的一句话就包含了堆与栈,看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针p呢?他分配的是一块栈内存,所以这句话的意思就是:在栈内存中存放了一个指向一块堆内存的指针p.
...   下一页
    摘要: 测试程序2 #include <iostream.h> #include <timer.h> void sum4() { int j = 0; for (unsigned i = 1; i < 630001;) { j += i++; j += i++; j += i++; j += i++; } } voi......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE