C语言 在运行分配静态内存的简单程序时出现deadlyssignal错误



我有以下代码:

#include<stdio.h>
int main(void){
int x[20000000];
return 0;
}

将其编译为gcc file.c,并运行它可以完美地工作。

但是,将其编译为gcc -fsanitize=address -fsanitize=undefined file.c会产生以下错误:

AddressSanitizer:DEADLYSIGNAL
=================================================================
==364==ERROR: AddressSanitizer: stack-overflow on address 0x7fffcdbeb220 (pc 0x55b9a94951a0 bp 0x7fffce3ea220 sp 0x7fffcdbeb220 T0)
#0 0x55b9a949519f in main src/gbarray.c:3
#1 0x7efd3f2320b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
#2 0x55b9a94950cd in _start (/mnt/d/duart/Documents/personalProjects/Random/garbageArrayValue/bin/garbageArray+0x10cd)
SUMMARY: AddressSanitizer: stack-overflow src/gbarray.c:3 in main
==364==ABORTING

这里发生了什么,我该如何解决这个问题?

这是怎么回事

堆栈溢出。

如何解决这个问题?

在堆栈上分配更少的内存或增加允许/可用的堆栈大小。

相关内容

最新更新