我正在尝试分配~1GB,但是当我检查指针地址时,它是一个负数。这可能是我在某处遇到的配置限制。
答案 0 :(得分:7)
不要测试指针的“符号”,这是无关紧要的。 malloc
将返回的唯一无效指针是空指针。如果它返回了其他内容,你可以使用它。
答案 1 :(得分:1)
但是当我检查指针地址时,它是一个负数
那是不可能的。你可能会看到的是将地址解释为有符号整数。
C本身没有嵌入限制。分配受到用于请求的块大小和操作系统寻址能力的数据类型的限制。
在运行时期间,如果没有所请求大小的连续空闲内存块,请求将失败(malloc()
返回NULL
)。