0
我的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;
}
调用'free(NULL);'总是安全的,因此特定的'if'只是噪声。 – unwind
你为什么不排除这些功能从汇编?无论如何,温和的编译器会这样做,但最好可以肯定,因为它们是已知的死代码。 –
如果你不直接或间接地调用函数,那么它将不会运行,也不会发生。 –
不,但如果代码没有被调用,为什么不ifdef呢? – George