0

我在一个共享库中有一个全局变量,其中包含一个int*.

当我尝试为其分配内存时,从我的程序内部,我收到一个double free or memory corruption errorfrom glibc. 有趣的是,在最新版本的 glibc 上不会发生这种情况。

代码是这样的:

typedef struct{ int a; int b; mytype_t *t; } A

在图书馆我有 A *a;

在代码中 a = malloc ( sizeof ( A ) ); a->t = malloc ( sizeof( *t) );

第一个 malloc 工作正常,只有当我做第二个时我才有问题。当我尝试释放 a->list 时,上述错误就出现了。a在 a->list 之前没有被释放。

谢谢你。

**EDIT**

我已经解决了这个问题,但我真的不知道为什么。我使用 calloc 而不是 malloc 而不是malloc( sizeof(*t) ),我使用calloc ( sizeof ( mytype_t ) );

4

0 回答 0