Luc*_*weg 6 c dll struct memory-leaks memory-management
我对C结构和数据类型有疑问.我有一个名为的结构test:
struct test
{
char* c;
char* c2;
};
Run Code Online (Sandbox Code Playgroud)
我从函数返回这个结构:
struct test a()
{
struct test t = { "yeah!", "string" };
return t;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是结构的内存是自动释放还是我必须通过手动执行此操作free().
[ 评论更新:]
函数a在DLL中,我想在主程序中使用struct.
TL/DR 版本:您不需要手动执行free任何操作;您可以像处理任何标量变量一样处理此结构实例。
稍长版本:结构体实例t具有自动存储持续时间,这意味着它的生命周期比函数的生命周期更长a;一旦a退出,分配的所有内存都会t被释放。内容的副本t将返回给调用者。
至于那些内容……
c并c2指向字符串文字;字符串文字的分配使得它们的生命周期延伸到整个程序的执行。c因此,和中的指针值在从 ; 返回c2后才有效。事实上,这些指针值在程序的整个生命周期内都有效。ta
您应该只需要调用通过、或free分配的内容。 malloccallocrealloc