我在一个共享库中有一个全局变量,其中包含一个int*
.
当我尝试为其分配内存时,从我的程序内部,我收到一个double free or
memory corruption error
from 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 ) )
;