另一种C问题:C结构的内存管理
让我们说我有了char*
类型的指针成员的结构体。
当我想初始化结构的实例我打电话malloc
:
MyStruct* ptr = (MyStruct*)malloc(sizeof(MyStruct)
然后分配256个字节的内存为char*
成员:
ptr->mem = (char*)malloc(sizeof(char)*256);
会发生什么变化指针成员以及当我拨打 free(ptr);
时指向的内存? 当我检查的程序有Valgrind的我看到,我有内存泄漏,但是当我明确地调用free(ptr->member);
还是有内存泄漏的valgrind显示“无效免费”的错误
什么是正确的方式管理内存由会员指出?
您不应该在C中使用'malloc'来返回值。 – 2012-04-09 21:07:48
'memcpy'有什么问题? – 2012-04-09 21:08:53
@Oli Charlesworth:为什么不呢? – 2012-04-09 21:10:07