当前位置: 代码迷 >> C语言 >> [求助]使用molloc函数只能申请64K的内存吗?
  详细解决方案

[求助]使用molloc函数只能申请64K的内存吗?

热度:125   发布时间:2007-08-16 23:58:17.0
[求助]使用molloc函数只能申请64K的内存吗?
我使用的是TC2.0
当我使用malloc申请大于64K的内存时,为什么编译器没有报错?

malloc可以申请大于64K的内存空间吗?

main()
{
if((unsigned char *)malloc(640000)==NULL)/*在编译时竟然没有报错*/
printf("NULL"); /*为什么没有执行该语句?*/
}

[此贴子已经被作者于2007-8-17 1:59:40编辑过]

搜索更多相关的解决方案: 内存  molloc  函数  malloc  申请  

----------------解决方案--------------------------------------------------------
在win32 下有将近2g的内存 怎么样啊
----------------解决方案--------------------------------------------------------
为什么要报错啊?
unsigned char *p = NULL;
p=(unsigned char *)malloc(640000);
printf("%d", p);
看看结果就知道行不行了


----------------解决方案--------------------------------------------------------
tc 使用的是16位的, 2的16次方也就是64KB, 最多就能分那么多,其实分不到64KB

----------------解决方案--------------------------------------------------------
以下是引用Skai在2007-8-17 0:58:58的发言:
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的内存
----------------解决方案--------------------------------------------------------
以下是引用卧龙孔明在2007-8-17 9:36:56的发言:
不是的,molloc默认申请的是near(进程堆)的内存,其实还可以使用farmalloc来申请far(远程堆)的内存,那样还可以获得400-600KB的内存

在非TC编译器里根本不需要farmalloc,并且标准里已经废弃了
----------------解决方案--------------------------------------------------------

  相关解决方案