摘要: http://blog.chinaunix.net/uid-26868581-id-3328648.html堆和栈的区别1. 管理方式不同栈,由编译器自动管理,无需程序员手工控制;堆:产生和释放由程序员控制。2. 空间大小不同栈的空间有限;堆内存可以达到4G,。3. 能否产生碎片不同栈不会产生碎片,因为栈是种先进后出的队列。堆则容易产生碎片,多次的new/delete会造成内存的不连续,从而造成大量的碎片。4. 生长方向不同堆的生长方式是向上的,栈是向下的。5. 分配方式不同堆是动态分配的。栈可以是静态分配和动态分配两种,但是栈的动态分配由编译器释放。6. 分配效率不同栈是机器系统提供的数据结 阅读全文
posted @ 2012-08-30 20:19 dreamboke 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1.什么是段错误 就是内存泄漏,访问了非法内存。要么指针为空,越界了,或者是本身地址非法,如0X00非法。“所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位为一个单位的表,在这张表中就保存着程序运行的代码段以及数据段的起始地址以及与此相应的段限和页面交换还有程序运行级别还有内存粒度等等的信息。一旦一个程序发生了越界访问,cpu就会产生相应的异常保护,于是segment. 阅读全文
posted @ 2012-08-30 20:03 dreamboke 阅读(464) 评论(0) 推荐(0) 编辑