gpt4 book ai didi

c - Valgrind 错误 "Invalid write of size 4"C

转载 作者:行者123 更新时间:2023-11-30 18:39:14 25 4
gpt4 key购买 nike

我正在用 C 语言编程,当我使用 Valgrind 检查内存错误时,显示了下一个错误:

==9756== Invalid write of size 4
==9756== at 0x40164D: main (flowTracker.c:294)
==9756== Address 0x24 is not stack'd, malloc'd or (recently) free'd

flowTracker.c 的第 294 行是下一个:

tabla_hash[clave_hash]->contador++;

tabla_hash 的声明是:

#define TAMANHO_TABLA 1048576

typedef struct{

int tiempo_ini;
int tiempo_ult;
uint8_t quintupla[13];
int num_bytes;
int num_SYN;
int num_ACK;
int contador;
double pack_s;
double bits_s;
} FlujoIP;

FlujoIP *tabla_hash[TAMANHO_TABLA];

最佳答案

正如 4566976 指出的,tabla_hash[clave_hash] 是(可能)NULL。这只是一个猜测,因为您没有提供可以重现问题的 MCVE,而我们无需填写空白或修复编译器错误...

在我看来,您可能打算像这样声明tablahash:FlujoIP tabla_hash[TAMANHO_TABLA];(不过,哇!那是一个巨大的/em> 数组)...然后您应该能够将 -> 更改为 .,如下所示: tabla_hash[clave_hash].contador++;

或者,如果您要在有问题的语句之前添加 if (tablahash[clave_hash] == NULL) { tablahash[clave_hash] = malloc(sizeof tablahash[clave_hash][0]); } 或其他可能也合适的东西...不要忘记释放巨大数组中的所有项目。

关于c - Valgrind 错误 "Invalid write of size 4"C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557722/

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