首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • c,c++里怎么申请逻辑上是顺序的物理上是不连续的内存?怎么申请逻辑上物理上多连续的内存块? [已结贴,结贴人:zhouxinfengone]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 08:31:40 楼主
    c,c++里怎么申请逻辑上是顺序的物理上是不连续的内存?怎么申请逻辑上物理上多连续的内存块?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 08:37:391楼 得分:0
    这个问题我很早以前就想知道,一直没得到答案 up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • babyvox1999
    • 等级:
    发表于:2008-04-22 08:45:222楼 得分:0
    逻辑上连续物理不连续?可能吗?
    逻辑和物理存储不是差个偏移?不太懂。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • akirya
    • 等级:
    发表于:2008-04-22 08:45:363楼 得分:0
    这个你自己做操作系统的话能做到
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • babyvox1999
    • 等级:
    发表于:2008-04-22 08:49:574楼 得分:0
    如果逻辑卷将用于根目录、引导、主交换或者转储,则物理盘区必须是连续的。这意味着,必须在一个物理卷上不留间隙地分配物理盘区。在非根磁盘上,与逻辑卷内连续逻辑盘区相对应的物理盘区可以在物理卷上不连续,或驻留在完全不同的磁盘上。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fetag
    • 等级:
    发表于:2008-04-22 08:51:125楼 得分:0
    这是不可能的!保护模式下的操作系统不会允许你这么干的

    你看看操作系统原理里面,关于内存管理的部分,就了解了...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 09:52:496楼 得分:0
    面试问到的 我也没办法....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:00:017楼 得分:0
    把那个面试者杀了. 这和c/c++有什么关系, 都是操作系统提供的.

    在windows里, 用delphi和visual basic也可以用同样方法分配物理内存的. 有ZwOpenSection/ZwMapViewOfSection/ZwUnmapViewOfSection
    几个函数.

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:07:028楼 得分:0
    好像是malloc和alloc的区别吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:18:329楼 得分:0
    写操作系统的,还是写驱动的??
    这样子分配物理上连续的内存, WIN下用 ExAllocatePool( NonPagedPool , size ), Linux下用 kalloc 分配未分页内存, 物理地址与逻辑地址相差固定的偏移..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:38:2110楼 得分:0
    引用 7 楼 sheenl 的回复:
    把那个面试者杀了. 这和c/c++有什么关系, 都是操作系统提供的. 

    在windows里, 用delphi和visual basic也可以用同样方法分配物理内存的. 有ZwOpenSection/ZwMapViewOfSection/ZwUnmapViewOfSection
    几个函数. 


    sheenl是这方面的高手
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:35:2911楼 得分:0
    如果是面试的问题,我觉得他是在看你对数组和链表的理解

    开个数组就可以得到逻辑上连续,物理上也连续的存储单元

    建个链表我觉得可以算是逻辑上连续,物理上有连续的可能性,但是这种可能性非常小

    至于物理连续逻辑不连续,我觉得实现这个很有难度,也很没意义。。。但是应该也能实现
    先用malloc为数组申请空间,这样保证了物理的连续,接下来要做的就是打破逻辑上的连续性的...
    多弄几个变量把数组空间一个一个的给过去,这样算逻辑不连续了吧?
    相信实际应用中不会有人这么做。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:39:2212楼 得分:0
    Windows Server 2008处于安全性的考虑提供了系统内存随机化分配的机制。
    在Windows Server 2008中连续分配的内存块,在内存空间的地址会是不连续的,随机分配在程序的全局堆之中
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:48:5113楼 得分:0
    以前也想过,觉得不可能,不过现在学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:48:5614楼 得分:0
    物理内存的连续地址空间,只有靠操作系统的支持
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 00:31:5315楼 得分:20
    引用 11 楼 lanmuyi 的回复:
    如果是面试的问题,我觉得他是在看你对数组和链表的理解

    开个数组就可以得到逻辑上连续,物理上也连续的存储单元

    建个链表我觉得可以算是逻辑上连续,物理上有连续的可能性,但是这种可能性非常小

    至于物理连续逻辑不连续,我觉得实现这个很有难度,也很没意义。。。但是应该也能实现
    先用malloc为数组申请空间,这样保证了物理的连续,接下来要做的就是打破逻辑上的连续性的...
    多弄几个变量把数组空间一个一个…

    说得好,就是这个理,有点在考你数据结构的理解
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 10:49:5316楼 得分:0
    物理实现都应该是操作系统的事,好像控制不了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 14:38:5017楼 得分:0
    OS给你挡了吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-24 19:29:0218楼 得分:0
    内存分配完全是操作系统的事,程序员所用到的地址都是逻辑地址,逻辑地址到物理地址的映射要由操作系统中的内存管理部分完成,具体的映射规则是由操作系统实现的,可能各种操作系统映射规则都不相同。我不知道是否存在能连续分配物理内存的函数,如果有,那么也是操作系统提供了一种连续物理内存映射的机制,然后封装成为系统调用,再封装为C语言的库函数,最后为程序员所调用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-24 19:42:5319楼 得分:0
    up 11 floor
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mydo
    • 等级:
    发表于:2008-04-24 21:24:0820楼 得分:0
    修改自己改页表 (但在win NT 中最小单位也只能是 4kb 大小)

    线形地址是连续的,但对应页表项物理地址可以修改成不是连续的,但不知楼主意欲何为???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-24 22:13:4021楼 得分:0
    引用 11 楼 lanmuyi 的回复:
    如果是面试的问题,我觉得他是在看你对数组和链表的理解

    开个数组就可以得到逻辑上连续,物理上也连续的存储单元

    建个链表我觉得可以算是逻辑上连续,物理上有连续的可能性,但是这种可能性非常小

    至于物理连续逻辑不连续,我觉得实现这个很有难度,也很没意义。。。但是应该也能实现
    先用malloc为数组申请空间,这样保证了物理的连续,接下来要做的就是打破逻辑上的连续性的...
    多弄几个变量把数组空间一个一个的给过…
    支持这种说法
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved