注册 登录
编程论坛 汇编论坛

关于C++中动态数组的底层实现的问题

八画小子 发布于 2011-07-04 15:23, 595 次点击
    刚刚在用汇编编写程序的时候,忽然想到一个问题:汇编语言可通过多种方式进行动态内存分配,第一种方式是通过系统调用让操作系统为其分配内存块,第二种方式是实现字节堆栈管理器以处理小对象的内存分配请求。     我的问题有两个:     1、第二种方式是不是需要我们自己来设计?如果是这样,还得用到第一种方式中的系统调用?     2、C++中的动态数组的分配和释放,是不是采用第一种方式?如果是,      int* ptr_a=new int[3]; 这一句执行后,ptr_a其实是一个结构,而这个结构中有句柄和指针(指向新分配空间的地址)这两个字段?
哪位高手能帮忙解答一下我的问题?谢谢。
1 回复
#2
zklhp2011-07-05 14:35
1、第二种方式是不是需要我们自己来设计?如果是这样,还得用到第一种方式中的系统调用?     2、C++中的动态数组的分配和释放,是不是采用第一种方式?如果是,      int* ptr_a=new int[3]; 这一句执行后,ptr_a其实是一个结构,而这个结构中有句柄和指针(指向新分配空间的地址)这两个字段?

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

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

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

C++咋实现不知道 new 也相当于一个函数罢 不过貌似调用的不是系统的API?这个你要去看C++的实现方式了
1