内存是否会被破坏?
问题描述:
嗨,我有这样的代码下面,只是增加了逻辑视图中不完整的语法内存是否会被破坏?
int globalVar;
static void* average()
{
void *data = NULL;
if (true)
{
globalVar = getAverage();
data = ((void *)&globalVar);
}
return (data);
}
所以我担心的是,如果我被分配到当地的指针返回globel变量,然后将它在内存或丢失时功能结束?
谢谢,
答
不,这里没有内存泄漏。内存泄漏只是由不平衡的malloc
和free
调用引起的,并且在这里没有任何事情发生。
(假设getAverage()
不是本身泄漏)。
答
所以我关心的是,如果我通过分配给本地指针返回globel变量,那么它将在内存中或功能结束时丢失?
号
如果它是一个全局变量,那么它就会有静态存储时间,它会通过本地指针返回时,它不会被“丢失”。
当您通过指针访问任何对象时,重要的是您访问的对象的存储持续时间;而不是指针的存储时间。因此,假设您的全局变量具有静态存储持续时间(通常在源文件顶部的函数之外定义),那么您没有问题。