メモリリークの問題が発生するアプリケーションにはいくつかの機能があります。しかし、私はそれらの関数(メモリリークの問題を含む)を呼び出すのではなく、特定のタスクのために他の関数を呼び出す。このアプリケーションを使用してメモリリークの危険性はまだありますか?メモリリークについて
0
A
答えて
2
は、上記の(私たちはメモリを割り当てるれる関数を呼び出していないので、プログラムにはメモリリークが機能allocate_memようがないで
#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;
}
、あなたは、コードのこの部分を持っていると仮定します)は呼び出されません。
更新:
メモリリークを回避するために何らかの対策:
(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;
}
+0
'free(NULL); 'を呼び出すことは常に安全です。したがって、特定の' if'はちょうどノイズです。 – unwind
関連する問題
- 1. IOSのメモリリークについて
- 2. メモリリークについての質問Javascript Windows Gadget(一般的に)
- 3. Webブラウザーのメモリリークに対するudioneのソリューションについて
- 4. 3つのNSMutableArraysを持つクラスのメモリリーク。どうして?
- 5. メモリリークの疑い
- 6. ダイナミックメモリのないメモリリーク
- 7. メモリリークと高いメモリ割り当て
- 8. Promise.allメモリリークを待っているループ
- 9. C - ダイナミックアレイのメモリリークのメモリリーク
- 10. メモリリーク:
- 11. メモリリーク
- 12. メモリリーク
- 13. メモリリークの可能性を見つける
- 14. ブランクの子フォームを持つmdiのメモリリーク
- 15. メモリリークが見つかりません
- 16. Railsアプリケーションでメモリリークを見つける
- 17. メモリリークが見つかりません
- 18. iphoneでメモリリークを見つける方法
- 19. perfviewでメモリリークを見つける
- 20. プロファイラを使用してメモリリークを見つける方法
- 21. valgrindを使用してmysql C++クライアントのメモリリークを見つける
- 22. 持つ問題は、私は多くのメモリリークを持って
- 23. メモリリークを見つけてjquery/javascriptアプリケーションをデバッグする方法は?
- 24. 2つの同一のマルチスレッドスクリプトがメモリリークの原因となっています
- 25. いくつかのメモリリークを伴うGTKのGUI
- 26. 私は解放できないメモリリークが1つあります
- 27. メモリリークJQuery - すべてのブラウザ
- 28. メモリリーク使用してsqliteの
- 29. ExtJSと悪名高いメモリリーク
- 30. OutOfMemory例外のないメモリリーク?
あなたがこれらの機能を除外しないのはなぜコンパイルから?適度なコンパイラは、とにかくそれを行うでしょうが、デッドコードとして知られているので、確かに最善です。 –
関数を(直接的または間接的に)呼び出さないと、関数は実行されず、関数は何も起こりません。 –
いいえ、コードが呼び出されない場合は、なぜそれを定義しないのですか? – George