gpt4 book ai didi

c - 由于 strlen_sse2() 导致的段错误

转载 作者:行者123 更新时间:2023-11-30 16:43:20 26 4
gpt4 key购买 nike

我正在使用一个字符指针数组。

#define MAXFIELDS 100
#define MAX_LENGTH 245

char *dex_data[MAXFIELDS]; //declared globally.

我在很多函数中都使用了这个 dex_data 数组。我像这样在主函数中分配内存

 dex_data = malloc(sizeof(char *)*MAXFIELDS);  

int p;

for(p=0; p < MAXFIELDS ; p++)
dex_data[p] = malloc(sizeof(char)*MAX_LENGTH);

每次都会出现段错误。我尝试通过GDB检查错误。它说

 #0  0x00007fb0a91b2b71 in __strlen_sse2 () from /lib64/libc.so.6

我是否错误地分配了内存,或者我是否尝试分配更大的内存?我不知道原因。有人可以帮忙吗?提前致谢。

最佳答案

这个:

char  *dex_data[MAXFIELDS];

是一个堆栈上已具有 MAXFIELDSchar* 指针的数组。它是不可分配的。然而,这里:

dex_data = malloc(sizeof(char *)*MAXFIELDS);

您正在尝试分配给它。这是未定义的行为。

只需删除该行即可。您不需要(也不允许)为 dex_data 分配内存。

旁注:分配给数组类型至少应该给您一个编译警告。看来您使用的是非常旧的编译器,您可能应该升级。

关于c - 由于 strlen_sse2() 导致的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339770/

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