次の C コードでメモリ エラーが発生しました。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv){
int i;
int *a = (int *)malloc(sizeof(int) * 10);
if (!a) return -1; /*malloc failed*/
for (i = 0; i < 11; i++){
a[i] = i;
}
for (i = 0; i < 11; i++){
printf("a[%d] = %d\n",i ,a[i] );
}
// free(a);
return 0;
}
memcheck はエラー Invalid read/write を検出し、間違いなく失われました。これは正しく、予期されたものです。
ここで、同じコードをアプリケーションの共有オブジェクト ファイル (.so) に追加しました。このアプリケーションはサービスとして実行され、デーモン プロセスです。それは決して終了しません。アプリケーションに valgrind を適用し、変更した '.so' を呼び出しました。
Memcheck は無効な読み取り/書き込みエラーを検出しますが、これらのエラーはすべて 1 つのメソッドに含まれていますが、確実に失われるわけではありません。
PVよろしくお願いします