还有就是..farmalloc()应该只能在DOS下使用的吧.那别的情况应该怎么办呢?
还有没有可以分配过大内存的办法呢?
[此贴子已经被作者于2006-10-22 17:21:55编辑过]
----------------解决方案--------------------------------------------------------
还有没有可以分配过大内存的办法呢?
SUN,那个farmalloc是DOS下,现在象WINDOWS这样的操作系统申请多少内存都一样用malloc就可以了,不是说malloc
申请不了大内存。最大可以申请到4G。
----------------解决方案--------------------------------------------------------
还有没有可以分配过大内存的办法呢?
SUN,那个farmalloc是DOS下,现在象WINDOWS这样的操作系统申请多少内存都一样用malloc就可以了,不是说malloc
申请不了大内存。最大可以申请到4G。
你的意思是4个字节 32位的寻址范围吧.
----------------解决方案--------------------------------------------------------
哈哈.小健.俺算了下..32位的寻址范围是4个G
那么俺就又挑出你一个错误.嘿嘿
[QUOTE]far指针的长度是32位,寻址范围是1M字节。[/QUOTE]
我记得20位才是1M嘛.当时就纳闷来着
----------------解决方案--------------------------------------------------------
平台的不同那自然另当别算。
----------------解决方案--------------------------------------------------------
数组太大,栈溢出了,有几个解决方法:
1。建议用动态分配,int *a = (int *)malloc(70000 * sizeof(int));
2.可以修改你的编译器中规定的栈大小,VC下默认好象是1M,TC似乎是64K。
3。把数组存在静态区域,但最好不要这样做。
那二维的怎么写啊??
----------------解决方案--------------------------------------------------------
ChenMo 想请教下您对new和malloc的分配区域有什么见解呢?
还有就是..farmalloc()应该只能在DOS下使用的吧.那别的情况应该怎么办呢?
还有没有可以分配过大内存的办法呢?
区域?他们都是分配堆内存,到底是否都是近堆还是远堆、或一者远一者近,尚未考究。
若说区别,new 与 malloc() 区别是(非常常规的一种认知,也是大家所熟悉的):
new 是操作符,malloc() 是库函数。
new 创建对象时调用构造函数(delete 操作符号引致析构函数被调用),而 malloc() 则不然(且释放需要用配对的 free() 函数)。
Windows 下要分配 2GB 可自由使用的堆(32位寻址可达4GB,2GB 为系统保留)使用 Win32 APIs 堆分配函数 HeapAlloc() 函数。
----------------解决方案--------------------------------------------------------
多谢谢大家的参与 受益匪浅
----------------解决方案--------------------------------------------------------
[QUOTE]区域?他们都是分配堆内存,到底是否都是近堆还是远堆、或一者远一者近,尚未考究。
[/QUOTE]
这么说来 new操作符 的实现并不是利用的malloc
而是用另一种方法来分配内存 并且封装到new操作符中对吗?
----------------解决方案--------------------------------------------------------