gpt4 book ai didi

c - 检测到堆栈溢出时强制 gcc 编译

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:41 25 4
gpt4 key购买 nike

我如何强制 gcc 编译一个程序,在该程序中我声明了一个比我的 ram 大的无符号整数数组 - 而没有收到警告警告:“表达式中的整数溢出”?

例如。我有 8gb 的 ram,我想声明一个 8.5gb 的数组。

编辑:

谢谢大家,我发现问题不在于数据类型,而在于一些预处理器。虽然我花了很长时间。 :)我写了

#define GIBI 1073741824
#define ARRAYSIZE 2*GIBI

显然编译器不喜欢这样。

最佳答案

integer overflow in expression不是堆栈溢出,这意味着 GCC 检测到您的表达式的结果导致您分配给它的左值出现整数溢出。例如,如果您尝试 malloc类似 INT_MAX * 2 的东西,该表达式将导致积分溢出。如果将其转换为 size_t ,你应该没有警告:

void *myvar = malloc((size_t) INT_MAX * 2);

size_t是,当然,依赖于平台,如果你不能表示你想要在 sizeof(size_t) 中分配的 block 的大小,你可能也会溢出。位。基本上,确保您使用的类型能够表示您要分配的内存量,并且它与 size_t 兼容。 (因为这就是 malloc() 所期望的,根据 stdlib.h )。

关于c - 检测到堆栈溢出时强制 gcc 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4443807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com