求助一下各位大神:关于Pascal指针类型
pascal吧
全部回复
仅看楼主
level 11
abslime 楼主
请问各位大神指针类型的变量没有使用dispose过程释放空间,程序结束后会将内存还给系统,还是继续占用内存空间
2014年02月25日 05点02分 1
level 11
abslime 楼主
如果继续占用内存,那么写链表时如果bug了,没释放内存那不是很惨
2014年02月25日 05点02分 2
不同进程使用的内存会被分页分块。进程开启时系统会划分一部分物理内存作为逻辑内存给进程使用,当进程结束是其分配的所有内存会被回收。一般来说程序入口都在0x04000000,这个0x04000000指的就是逻辑内存而不是真正的物理内存地址,真正的物理内存是不能访问的。
2014年02月25日 19点02分
所以对于所有32位程序来说,能使用的内存空间都是0x00000000-0x7FFFFFFF,实际上即使物理内存的大小不足2G也没关系,因为当物理内存不足(需要分配更多逻辑内存)时就会使用虚拟内存(硬盘文件当作逻辑内存)。
2014年02月25日 19点02分
你可以定义一个变量i然后弄一个指针p指向i,然后你会发现这个p的值大约在0x00409000处。说明0x00400000是程序入口,0x00409000是数据段入口地址。如果同时再开一个一样的程序,另外一个程序也在0x00409000,那这个0x00409000存的到底是哪一个i呢?
2014年02月25日 20点02分
事实上两个i在真正物理内存的地址时不同的,只不过系统将不同进程的逻辑内存区域映射到了不同的物理内存区域而已。
2014年02月25日 20点02分
level 12
听说有些Pascal编译器上的dispose是不做事的,反正程序结束的时候内存会被操作系统自动释放
2014年02月25日 14点02分 3
明白了,谢谢
2014年02月25日 15点02分
1