是否有某种内存限制的可执行文件(用C语言编写)来运行没有问题?

i'm做用C项目,而代码块是我的IDE。 Windows Vista中的操作系统。 我增加了一些新的东西已经工作代码,现在可执行崩溃每次。 我在编译后虽然没有错误。 计算机和编程是不是我的领域,但我怀疑它可能有一些做某种内存的限制(如果存在,甚至是有道理的)。 我这样说是因为i'm正与尺寸的三种不同的3D矩阵/阵列:

  • 1500x5x2
  • 1500x5x12
  • 1500x5x200

然后我就另外两个一维数组两个维度1500的,这是所有工作的罚款。

它开始崩溃时,我又增加了三个二维矩阵/阵列的所有维度1500x5。 如果我评论一些现有的矩阵,换新做工精细,但只有一次。

(顺便说一句,所有上述提到矩阵是INT类型,被定义指针和callocs)

有什么建议么?

--------------解决方案-------------

没有与平台等的限制,但是你的3 3D矩阵只用了几MB的RAM(刚刚超过6),所以我怀疑你打给那些限制。

如果是刚开始的时候,你添加了其他的矩阵崩溃,我会更怀疑你有定义上添加了新的矩阵码的指针内存分配/访问错误。

你如何定义你的矩阵?

- - 编辑 - -

你应该尝试的代码块进行调试。 这应该确切地告诉你,你的崩溃发生。

我不知道,阵列可能会产生不利的尺寸。

事实上,我相当肯定,他们不可能像一个数组维度是你打算把它的项目数。

我建议您将了解如何使用IDE的调试器。 我们真的没有什么去还。

是否有某种内存限制的可执行文件(用C语言编写)来运行没有问题?

在32位操作系统程序限制为4GB内存(少了,实际上,但这是硬上限),因为你的指针长度为32位,而你只能引用4GB与32位指针。

这不应该是问题,不过,因为你最大的数组只消耗不到6MB - 即使你实例化这些阵列,你真行几百。

你几乎以下的标准方式创建在C中的动态多维数组:

int *** layer=calloc(lines, sizeof(int **));
for(i=0;i<lines;i++)
{
layer[i]=calloc(columns, sizeof(int*));
for(j=0;j<columns;j++)
{
layer[i][j]=calloc(hight, sizeof(int));
}
}

所以我想看看其他地方在你的代码。 使用调试器。 请确保您的数组访问都不会出界,或数组元素视为一个指针时,它不是。

您可以指定什么样的崩溃?

你得到什么信息?

我引用上面的一个答案:

“我建议你学习如何使用IDE的调试器。我们真的没有什么去还。”

而不是猜测可能的原因使用可用的工具来缩小问题到特定的代码行。

现在我已经看到你的评论,你已经解决了您的问题,但总体上调试正确的方案,并张贴问题时提供尽可能多的代码和细节尽可能的唯一途径!

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.505 (s). 10 q(s)