| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 595 人关注过本帖
标题:关于C++中动态数组的底层实现的问题
只看楼主 加入收藏
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
结帖率:96.55%
收藏
已结贴  问题点数:0 回复次数:1 
关于C++中动态数组的底层实现的问题
    刚刚在用汇编编写程序的时候,忽然想到一个问题:汇编语言可通过多种方式进行动态内存分配,第一种方式是通过系统调用让操作系统为其分配内存块,第二种方式是实现字节堆栈管理器以处理小对象的内存分配请求。     我的问题有两个:     1、第二种方式是不是需要我们自己来设计?如果是这样,还得用到第一种方式中的系统调用?     2、C++中的动态数组的分配和释放,是不是采用第一种方式?如果是,      int* ptr_a=new int[3]; 这一句执行后,ptr_a其实是一个结构,而这个结构中有句柄和指针(指向新分配空间的地址)这两个字段?
哪位高手能帮忙解答一下我的问题?谢谢。
搜索更多相关主题的帖子: 空间 操作系统 
2011-07-04 15:23
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
1、第二种方式是不是需要我们自己来设计?如果是这样,还得用到第一种方式中的系统调用?     2、C++中的动态数组的分配和释放,是不是采用第一种方式?如果是,      int* ptr_a=new int[3]; 这一句执行后,ptr_a其实是一个结构,而这个结构中有句柄和指针(指向新分配空间的地址)这两个字段?

您的意思不大明白 根据我的理解 第一个 需要自己设计

你的意思可能是 自己构建一个堆栈框架 这样的话 当然是自己实现了 同时 这样自由度也大了

比如 int buf[256]; 这样的在栈分配内存 分配的大小必须是常数 也就是你不能输入一个数来分配 C就这么设计的 但你要用汇编就可以突破这个 sub 一个数就好了 想多少多少

C++咋实现不知道 new 也相当于一个函数罢 不过貌似调用的不是系统的API?这个你要去看C++的实现方式了
2011-07-05 14:35
快速回复:关于C++中动态数组的底层实现的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016717 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved