- 论坛徽章:
- 0
|
1。一个malloc请求分配的内存大小为什么最好能圆整为2的平方?
2。能说下内存对齐吗?对这个概念理解的不好。
3。怎样得到页面的大小?
4。怎样得到交换区的大小?
5。
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/resource.h>
- int main(void)
- {
- int mb = 0;
- int err;
- struct rlimit limit;
- err = getrlimit(RLIMIT_AS, &limit);
- if(err != 0){
- perror("getrlimit error");
- exit(1);
- }
- else{
- (limit.rlim_cur == RLIM_INFINITY) ? printf("infinity\n") : printf("%10ld\n", limit.rlim_cur);
- }
- while(malloc(1<<20)){
- mb++;
- }//看看一个进程中可以分配多少MB的内存
- printf("In a process can allocated %d MB\n", mb);
- exit(0);
- }
复制代码
./a.out
infinity
In a process can allocated 3054 MB
结果是3050左右,c专家编程中说:
1。它的值取决于交换区和系统配置中的进程限制,能否解释这一句?
2。还有,如果实际分配的内存小于1M字节,你实际得到的内存是否比这要多一些?为什么?
这些看的不是很明白,火候不到家啊!
[ 本帖最后由 xiaozhu2007 于 2008-1-10 23:21 编辑 ] |
|