C:分配限制

时间:2011-04-10 18:45:29

标签: c memory-management configuration

我正在尝试分配~1GB,但是当我检查指针地址时,它是一个负数。这可能是我在某处遇到的配置限制。

  • 目标是分配〜1GB
  • 极限~0.7GB([struct] 48 * 16890)
  • 1.5GB可用内存
  • 此前没有分配大量内存。
  • 使用fedora linux。
  • 无编译错误

2 个答案:

答案 0 :(得分:7)

不要测试指针的“符号”,这是无关紧要的。 malloc将返回的唯一无效指针是空指针。如果它返回了其他内容,你可以使用它。

答案 1 :(得分:1)

  

但是当我检查指针地址时,它是一个负数

那是不可能的。你可能会看到的是将地址解释为有符号整数。

C本身没有嵌入限制。分配受到用于请求的块大小和操作系统寻址能力的数据类型的限制。

在运行时期间,如果没有所请求大小的连续空闲内存块,请求将失败(malloc()返回NULL)。