把需要分配内存的大小作为参数算出来这是malloc的工作,怎么告诉系统,把malloc联系系统调用是编译器的工作.. 分配内存,是系统的工作,确实每次都要让内核处理laborer 写了:malloc的实现不完全是系统调用。可以想象一下,如果是需要分配的内存比较小的时候,每次都进入内核态让内核处理,多累啊。3162073 写了:调用malloc 编译器无非就是調系统调用... 把参数压里栈后调用int 0x80,in21h 什么的.. 反汇编是看不出什么东西.. 本来都是黑箱.. 要实现 malloc自己写个小系统就知.. 这个东西不是在应用层的
在LINUX下编程的好处,限C语言C++
-
- 帖子: 14
- 注册时间: 2007-05-10 23:10
- laborer
- 帖子: 1016
- 注册时间: 2005-10-25 11:15
- 联系:
从逻辑上分析,在i386上,内核分配内存一次最少一页,也就是4KB,而malloc一次可以只分配1个Byte,总不可能每次malloc(1)的时候都去分配4KB的容量吧。3162073 写了:把需要分配内存的大小作为参数算出来这是malloc的工作,怎么告诉系统,把malloc联系系统调用是编译器的工作.. 分配内存,是系统的工作,确实每次都要让内核处理laborer 写了:
malloc的实现不完全是系统调用。可以想象一下,如果是需要分配的内存比较小的时候,每次都进入内核态让内核处理,多累啊。
其实做个小实验就能看出来了,你可以用strace看看是不是每次malloc都会mmap或者brk。
当然,不排除有些简单的libc实现直接就让内核处理了(比如某些嵌入式运用上),但是主流的肯定是libc和kernel的内存分配算法混合的。
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
-
- 帖子: 47
- 注册时间: 2007-02-17 22:32
- 来自: 广东河源
- 联系:
-
- 帖子: 14
- 注册时间: 2007-06-26 11:22
- David50814
- 帖子: 556
- 注册时间: 2007-06-11 4:20
- 来自: 北京
- 联系:
- David50814
- 帖子: 556
- 注册时间: 2007-06-11 4:20
- 来自: 北京
- 联系:
- David50814
- 帖子: 556
- 注册时间: 2007-06-11 4:20
- 来自: 北京
- 联系:
-
- 帖子: 256
- 注册时间: 2007-07-26 15:07
初学者来说,绝对是windows下编程更为惬意,特别是对我们这些从小就在WIN里面泡惯了的学生来说...
linux下编程的好处?
1,可以不用盗版IDE了,心里比较舒服?
2,编译器、编辑器、调试器就那么几个,就算升级,用法也不会出现太多变化,各种IDE也基本都是调用这些基本命令
组装起来的,使用起来不会有太多困难。而WINDOWS下面每个厂商开发的IDE各不相同,就算是同一厂商,不同版本的ide也常常会有很大区别,更换开发环境或者进行版本升级都有一个再学习的过程。
3,LINUX下没有那么丰富的游戏资源,估计可以比较专一的进行编程吧(条件:没有两个以上的系统)
4,据统计LINUX程序员比WIN程序员工资高30%左右...
linux下编程的好处?
1,可以不用盗版IDE了,心里比较舒服?
2,编译器、编辑器、调试器就那么几个,就算升级,用法也不会出现太多变化,各种IDE也基本都是调用这些基本命令
组装起来的,使用起来不会有太多困难。而WINDOWS下面每个厂商开发的IDE各不相同,就算是同一厂商,不同版本的ide也常常会有很大区别,更换开发环境或者进行版本升级都有一个再学习的过程。
3,LINUX下没有那么丰富的游戏资源,估计可以比较专一的进行编程吧(条件:没有两个以上的系统)
4,据统计LINUX程序员比WIN程序员工资高30%左右...