当我使用malloc申请大于64K的内存时,为什么编译器没有报错?
malloc可以申请大于64K的内存空间吗?
main()
{
if((unsigned char *)malloc(640000)==NULL)/*在编译时竟然没有报错*/
printf("NULL"); /*为什么没有执行该语句?*/
}
[此贴子已经被作者于2007-8-17 1:59:40编辑过]
----------------解决方案--------------------------------------------------------
在win32 下有将近2g的内存 怎么样啊
----------------解决方案--------------------------------------------------------
为什么要报错啊?
unsigned char *p = NULL;
p=(unsigned char *)malloc(640000);
printf("%d", p);
看看结果就知道行不行了
----------------解决方案--------------------------------------------------------
tc 使用的是16位的, 2的16次方也就是64KB, 最多就能分那么多,其实分不到64KB
----------------解决方案--------------------------------------------------------
tc 使用的是16位的, 2的16次方也就是64KB, 最多就能分那么多,其实分不到64KB
既然是这样,为什么编译时没有报错?
----------------解决方案--------------------------------------------------------
[root@localhost ~]# cat main.c
#include <stdio.h>
int main(void)
{
printf("%d\n", "hello china");
return 0;
}
[root@localhost ~]#
编译的时候报错吗
----------------解决方案--------------------------------------------------------
main()
{
if(((unsigned char *)malloc(640000))==NULL) /*在编译时竟然没有报错*/
printf("NULL");
}
那为什么没有执行printf("NULL");语句??
[此贴子已经被作者于2007-8-17 2:00:14编辑过]
----------------解决方案--------------------------------------------------------
int a;
a=640000;
printf("%d",a);
试试这个不就知道了
----------------解决方案--------------------------------------------------------
不是的,molloc默认申请的是near(进程堆)的内存,其实还可以使用farmalloc来申请far(远程堆)的内存,那样还可以获得400-600KB的内存
----------------解决方案--------------------------------------------------------
不是的,molloc默认申请的是near(进程堆)的内存,其实还可以使用farmalloc来申请far(远程堆)的内存,那样还可以获得400-600KB的内存
在非TC编译器里根本不需要farmalloc,并且标准里已经废弃了
----------------解决方案--------------------------------------------------------