MALLOC分配失败!

C

CMOS

Guest
你好,我是用malloc动态调整大小的2 - D图像处理的整数数组。但是,每当我尝试调整值超过15KB(120x120)内存分配失败的阵列,因此我无法处理任何大于120 x 120像素的图像。我在DOS外壳中使用的Turbo C 3.0操作系统从Windows。这是一个2 - D阵列,可用于分配的最大内存?我怎样才能进一步增加?
 
奇怪...你可以放置一个示例代码ilustrating .... NeuralC
 
什么是您使用的内存模型?微型,大型,hughe ...
 
[报价= neuralc]奇怪...你可以放置一个示例代码ilustrating .... NeuralC [/QUOTE]这是我的代码[代码]无效CreateImage(INT ***形象,INT&M的INT&N){INT I,J;((*图像=(INT **)的malloc(n * SIZEOF( INT *)))== NULL){法院
 
你的编译器的INT有多大? 2个或4个字节?小模型可能给你只有64K的数据空间。你的第二个循环分配N * M * SIZEOF(INT)字节。这无论编译器已经消耗可能加超过64K。尝试一个不同的内存模型。
 
我试图与它巨大的模型,但仍然没有改变。我什至改变了指针“远”和使用farmalloc,而不是使用malloc。大图像仍然分配falis! :(
 
试试这个:INT ** CreateImage(男,INT N){INT我** PT((PT =的malloc(n * SIZEOF(INT *)))==空){法院
 
是如何设置堆和堆栈的大小,但对Borland 4.5的链接。如果TC3不支持,可能你可以chnage到4.5版本 http://teaching.idallen.com/c_programming/changingRunTimeStack.html 可能是错误的处理不同的内存模型版本,是受指责TC3。检查Borland的网站 - 的PS用于指针分配内存是好的,有更快的访问可以有提示,但您将使用额外的1200 * SIZEOF(INT)内存。您知道阵列的几何先验的,所以它是多余的,有额外的指针数组。
 
如果你没有任何问题,切换到另一个编译器,最好使用Microsoft Visual C + +和使用操作系统本身(WIN32API)内的“真实”的内存分配例程,我觉得它的速度更快。 Win32API函数是:1。 VirtualAlloc的2。 HeapAlloc 3。的GlobalAlloc 4。 LocalAlloc IIRC此功能之一,被称为 malloc的在操作系统本身的库函数。我的意思是什么,是malloc函数调用将上面的功能之一的“动态链接过程”来解决。
 
您好,现在问题就解决了。编译器提供farmalloc问题。如果我试着执行我的程序编译器运行时,它是麻烦。运行结束后,编译器IDE编译的。EXE工程witout问题。
 
嗨,什么是“getch()”?我编译上面的代码的问题。它说未声明的标识符。我需要一个头或什么?谢谢!
 
getch()将等待,直到用户按下任意键。它actiually返回的ASCII值的关键。它的定义是“conio.h”为C + +使用CIN;
 
有了! ,但我的exit()现在.. nieway问题,我就图它自己... ...再次感谢!顺便说一句,CMOS是不是这个数组thingy u're做有关地雷?还记得吗?我问ü有关的东西的门槛
 
[报价= zkai2000]顺便说一句,CMOS,是不是这个数组thingy u're做有关地雷?还记得吗?我问ü关于门槛的东西[/QUOTE]是的,它是有关图像处理的二维数组。
 
汝去表达它使用GUI?如果IM要去使用GUI VB,我将有一个DLL文件保存到C + +代码。然后用VB来读取它的仪式?
 
[报价= zkai2000]如果IM要去使用GUI VB,我将有一个DLL文件保存到C + +代码。然后用VB读取的仪式呢?[/QUOTE]当然,这是走的路,如果你会使用VB作为GUI。我已经做了这样的事,但我接口VB的一个DLL,它是用C语言,不是C + +。
 
多数民众赞成之一,更快地做它的方式。或者你可以写相同的代码在VB。
 
nope我不能.. COZ我需要的C + +做我的方向算法的变化。我需要左右摇摆阵图:ð AFAIK,VB不能做,仪式? :(
 

Welcome to EDABoard.com

Sponsor

Back
Top