<分区>
我的 c 应用程序中有几个函数存在内存泄漏问题。但是我不调用那些函数(包含内存泄漏问题)而是调用其他函数来完成特定任务。使用此应用程序时,我是否仍有内存泄漏的风险?
标签 c
<分区>
我的 c 应用程序中有几个函数存在内存泄漏问题。但是我不调用那些函数(包含内存泄漏问题)而是调用其他函数来完成特定任务。使用此应用程序时,我是否仍有内存泄漏的风险?
最佳答案
假设你有这段代码,
#include <stdio.h>
#include <stdlib.h>
int allocate_mem()
{
char *a = malloc(sizeof(char) * 256);
}
int helloworld()
{
printf("Hello World!");
}
int main()
{
helloworld();
return 0;
}
在上面我们没有调用分配内存的函数,所以程序中没有内存泄漏,因为函数 allocate_mem() 从未被调用。
更新:
一些避免内存泄漏的措施:
(1)
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define KB (1024)
char *alloc_mem()
{
char *mem = (char *)malloc(sizeof(char) * 1 * KB >>2);
return mem;
}
int main()
{
char *pmem = NULL;
if(NULL == (pmem = alloc_mem()))
{
printf("err, failed when alloc_mem().\n");
return -1;
}
sprintf(pmem, "hello, world!\n");
printf("%s", pmem);
if(NULL != pmem)
free(pmem);
return 0;
}
(2)
int alloc_mem(char *pmem, long mem_sz)
{
if(NULL == (pmem = (char *)malloc(sizeof(char) * mem_sz)))
{
printf("err, failed when malloc(), %s %s[%d].\n", __FILE__, __FUNCTION__, __LINE__);
return -1;
}
return 0;
}
关于c - 关于内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860970/