请教:
1、应用程序一旦运行,windows(或linux,unix)操作系统是怎样为它分配内存的?
2、动态申请一块空间(如new char[12]),这此空间分配在何处?
3、如果应用程序退出了,但没有动态撤销原动态申请的空间,这时该空间是否被操作系统回收?其他应用程序是否可用它?
1、应用程序一旦运行,windows(或linux,unix)操作系统是怎样为它分配内存的?
2、动态申请一块空间(如new char[12]),这此空间分配在何处?
3、如果应用程序退出了,但没有动态撤销原动态申请的空间,这时该空间是否被操作系统回收?其他应用程序是否可用它?
1 操作系统首先创建一个进程内核对象,然后在你的应用程序所指定的基地址加载整个exe文件到内存,因为windows有虚存这个概念,所以一般不会给某个应用程序分配固定的内存数量的。随需而变。2 此块内存分配在栈空间上,也就是一个共享内存区上,对于每个进程来说都有一个这样的栈空间。3 当进程关闭并撤销时,操作系统会自动清空它所关联或占用的内存。
b.也许有些天才程序员可以做到以实现特殊的目的,但是一般来说其它应用程序是用不起来的。
1。 应用程序运行后,操作系统给这个进程(是进程哈)分配了地址空间和堆栈。
2。 new char[12]是分配在逻辑上的进程的地址空间的堆上
3。 如果应用程序退出,理论上讲,在它的地址空间上的所有堆栈都要释放,也就是说或许我们不调用delete,操作系统都会帮我们释放,但是实际上如此,谁也不是很清楚 。 但是程序设计者如果能够尽量多的控制自己的程序,那是非常美好的事情 。 在没有撤销前,其它的应用程序应该不能用一孔之见
俺也发现俺思路怎么乱七八糟的呢,看来还是没有度过状态低蘼期呀,哈哈。
进程运行后,将拥有4GB的内存空间,但只是空间,就是说你可以使用这么大,但是还是要先申请才能用的2、动态申请一块空间(如new char[12]),这此空间分配在何处?
new分配的内存全部在堆上3、如果应用程序退出了,但没有动态撤销原动态申请的空间,这时该空间是否被操作系统回收?其他应用程序是否可用它?
进程退出后,该进程拥有的所有资源(用户的或者核心的)将全部被操作系统回收
至于关了程序仍然占用资源那是应为没有将进程关掉!
这个绝对是肯定的,《windows 核心编程》明确指出了的