我的c应用程序中有几个功能存在内存泄漏问题。但我不会调用这些函数(包含内存泄漏问题)而是为特定任务调用其他函数。我仍然有使用此应用程序的内存泄漏的风险?
答案 0 :(得分:2)
假设你有这段代码,
#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;
}