gpt4 book ai didi

c - 为什么此代码在特定值后失败

转载 作者:行者123 更新时间:2023-12-03 03:30:33 24 4
gpt4 key购买 nike

代码:

int main(int argc, char *argv[])
{
typedef struct lb_data_US
{
char uname[255];
char Eid[4];
char myrole[4];
char Login_t[30];
char Logout_t[30];
char ClientIP[20];
char ZoneName[256];
};

int x = atoi(argv[1]);
lb_data_US lb_local[x];
printf("stands for %d value\n", x);
exit(0);
}

当我使用 ./structure_testop 20995 运行此代码时,它完全运行,但是当我使用更大的参数(如 20996 或更多)运行此代码时,它偶尔会失败......当我尝试通过 gdb 调试它时,它说

Program received signal SIGSEGV, Segmentation fault.
0x003d6773 in _IO_vfprintf_internal (s=<value optimized out>, format=<value optimized out>, ap=<value optimized out>)
at vfprintf.c:233
233 int save_errno = errno;
Current language: auto; currently c"

谁能解释一下吗?

最佳答案

假设您实际上使用支持动态数组大小调整的 C++,请考虑参数 20995 的作用:它动态分配 20995 次 sizeof lb_data_US (大约 600),总分配量为12.5+ 兆字节。很少有环境支持如此大的堆栈大小。相反,通过许多环境中支持的 malloc() 使用堆来限制进程大小。

关于c - 为什么此代码在特定值后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530599/

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