阅读:1597回复:13
怎样动态分配内存?40分
我想在计算机启动以后,用驱动程序分配非分页内存,分配内存的大小可以由应用程序告诉它,随时可以增加和减少内存的大小,不知有没什么高招?
|
|
沙发#
发布于:2003-08-13 16:29
可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。
|
|
|
板凳#
发布于:2003-08-13 21:07
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2003-08-15 16:34
可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。 非分页池中内存有限,没有必要就不要从这里分配了! |
|
|
地下室#
发布于:2003-08-15 16:38
[quote]可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。 非分页池中内存有限,没有必要就不要从这里分配了! [/quote] 不一定非要分配非分页内存,也可以分配分页内存! |
|
|
5楼#
发布于:2003-08-17 13:01
[quote][quote]可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。 非分页池中内存有限,没有必要就不要从这里分配了! [/quote] 不一定非要分配非分页内存,也可以分配分页内存! [/quote] 是的! |
|
6楼#
发布于:2003-08-18 12:57
谢谢大家的热情回答,其实,我想知道的是计算机系统到底我们可以使用的非分页内存有多大?使用什么方法可以在系统启动以后分配非分页内存,因为我听说非分页内存只能在系统启动的时候分配。希望各位大侠能够指点秘经!我一定给分。:)
|
|
7楼#
发布于:2003-08-18 15:02
因为我听说非分页内存只能在系统启动的时候分配。 who告诉你的? |
|
8楼#
发布于:2003-08-18 20:30
请大侠指点
|
|
9楼#
发布于:2003-08-18 20:51
PVOID
ExAllocatePool( IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes ); NonPagedPool Non-paged pool, which is non-pageable system memory. Non-paged pool can be accessed from any IRQL, but it is a scarce resource and drivers should allocate it only when necessary. The system can only allocate buffers larger than PAGE_SIZE from non-paged pool in multiples of PAGE_SIZE. Requests for buffers larger than PAGE_SIZE. but not a PAGE_SIZE multiple, waste non-pageable memory. |
|
10楼#
发布于:2003-08-19 09:34
[quote]因为我听说非分页内存只能在系统启动的时候分配。 who告诉你的? [/quote] 是的,谁这样说的,拉出来,砍了。 |
|
|
11楼#
发布于:2003-08-20 19:19
可是我是想在系统启动以后,分配很大的连续分页内存。而且无论系统运行到什么时候,都可以分配。这个时候可以分配连续分页内存已经很小了,如果分配小片连续份页内存当然没有问题,但是要想分配很大的一片,该怎么办呢?比如分配100M.
|
|
12楼#
发布于:2003-08-20 19:54
可是我是想在系统启动以后,分配很大的连续分页内存。而且无论系统运行到什么时候,都可以分配。这个时候可以分配连续分页内存已经很小了,如果分配小片连续份页内存当然没有问题,但是要想分配很大的一片,该怎么办呢?比如分配100M. 系统的非分页的内存很有限的,这么大的一块非分页的内存我觉得是不可能分到的.不知道哪位大侠有高招? |
|
13楼#
发布于:2003-08-20 23:23
你一下子用掉100M,还要不要别的app和OS活啊? :D还是连续的100M!
|
|