简单说吧(因为我也不太懂):
代码区:就是存放你的程序的编译后的可执行代码的地方了
数据区:存放你的程序静态数据,如全局变量、常量等。
栈:在函数调用中,保存程序的当前运行状态、函数的参数、返回结果等。
堆:在分配给一个程序的内存中,除了上面三部分,剩下的就是堆了,也就是程序的自由空间,局部变量(自动变量)等,还有New给指针用的空间,都在这里分配。在内存空间的顺序是代码区,数据区,堆,栈(很多书上都由一张这样的图的)一下打了这么多字,好累。:)

解决方案 »

  1.   

    听说在C++中的堆和栈与DELPHI中的用途不太一样,有什么区别吗?
      

  2.   

    要学汇编你可以研究,如果学delphi我看你还是免了这些吧,delphi是面向高端的产品,
    没必要在这方面计较
      

  3.   

    这是个 windows 或者说是操作系统的概念,并不是哪种编程言语特有的。
      

  4.   

    以下摘自  <<Essential Pascal>>:    堆是指可供程序使用的一部分内存空间,也称为动态内存区域。在堆中,存储空间分配与释放的次序是没有限制的。这就是说,假设你顺序分配了三块空间,以后你可以按任何顺序去把它们销毁。堆管理器会替你管理一切,所以你只要调用GetMem 或者对象的构造器就可以“申请”新的存储空间,Delphi 会为您分配新的存储块。(也可以重复使用那些已经废弃的存储块)     栈是指可供程序使用的一部分动态内存空间,但是分配与释放顺序都是特定。栈是后进先出的。这就是说,你最近分配的那个存储对象将是第一个被删除的。例程(过程,函数和方法的调用)用的就是栈。 当你调用一个例程时,它的参数和返回值就存放在栈里(要是你没特意做优化的话,Delphi 总是这么做,----这是默认的)。还有那些你在例程中声明的变量(在 begin 之前用 var 声明 )也存放在栈中,所以当例程终止时它们也就被自动清除了(在返回对例程的调用之前,按后进先出的顺序)。
      

  5.   

    以下摘自  <<Essential Pascal>>  Delphi 用堆的形式来给对象,字符串,动态数组,分配内存;那些有特殊用途的动态存储空间(用GetMem获取)也是用堆实现的。  Delphi 用栈来存储参数和返回值,本地例程变量等等。对 Windows API 调用也要用到栈。   Windows 应用程序可以保留大量的内存空间以备建栈之用。在 Delphi  project 选项的 linker 页里,你可以进行这方面的设置,当然,默认的设置基本上已经可以满足要求了。如果出现了栈满的错误,这常常是因为你的某个函数一直在对自己进行递归调用的缘故,而不是因为栈太小了。可惜翻译的人的水平不怎么样, 呵呵