Articles of valgrind

Вальгринд утверждает, что есть свободная память. Это плохо?

Valgrind дает мне следующую сводку утечки моего кода. Тем не менее, я освободил всю память malloc‘ed. Это плохо, или это нормально? Моя программа находится в c. == 3513 == СОДЕРЖАНИЕ: == 3513 == определенно потеряно: 0 байт в 0 блоках. == 3513 == возможно потеряно: 0 байт в 0 блоках. == 3513 == все еще […]

Правильно удалить элементы из связанного списка? Ошибки памяти с указателями

Я реализую hash-таблицу с функцией remove_entry, а также функцию clear_table. Сейчас я получаю ошибки чтения памяти, относящиеся к функции remove_entry. И помощь будет с благодарностью Это мои структуры: typedef struct bucket { char *key; void *value; struct bucket *next; } Bucket; typedef struct { int key_count; int table_size; void (*free_value)(void *); Bucket **buckets; } Table; […]

valgrind обнаруживает утечку памяти, но приложения работают

Благодаря этой функции я написал приложение, которое можно читать в базе данных sqlite: struct query_res excucute_sql_statement(char *database, char *zSQL){ sqlite3 *conn; sqlite3_stmt *res; const char *tail, *buf, *zErrMsg; struct query_res q_res; char table[MAXSTMTNUM][MAXCOLNUM][MAXSTRINGLEN]; q_res.table = table; q_res.num = 0; int maxtry = 5, try = 0; while (sqlite3_open(database, &conn)) { if (try > maxtry) break; […]

Утечка памяти в программе GTK hello_world

Итак … Я пытаюсь устранить некоторые утечки памяти из моей программы GTK + 3. Хотя было бы неплохо оглянуться на некоторые простые примеры, чтобы увидеть, есть ли какие-то вещи для очистки, которые я забываю, но программа hello_world, представленная в документации, также имеет утечки. (Выход Valgrind ниже). Являются ли эти утечки приемлемыми? Если да, то есть […]

C, strlen и Valgrind

Я пытаюсь понять, почему Вальгринд выплевывает: ==3409== Invalid read of size 8 ==3409== at 0x4EA3B92: __GI_strlen (strlen.S:31) когда я применяю strlen на динамически выделенной строке? Вот короткий тестовый файл: #include #include #include int main() { char *hello = “Hello World”; char *hello2; /* Step 1 */ printf(“Step 1\n”); printf(“strlen : %lu\n”,(unsigned long)strlen(hello)); /* Step 2 […]

Valgrind сообщает о утечке памяти на OS X 10.8.1

Я использую Valgrind версии 3.8.0 на OS X 10.8.1, Mountain Lion. Что касается совместимости с 10.8.1, сайт Valgrind говорит (курсив мой): Valgrind 3.8.0 работает на {x86, amd64} -darwin (Mac OS X 10.6 и 10.7 с ограниченной поддержкой 10.8). Я знаю, что для 10.8.1 существует только «ограниченная поддержка». Тем не менее, в этом отчете об ошибке […]

Должно ли программисту освободиться при выходе ()?

У меня есть программа, и когда я ввожу неправильные данные с клавиатуры, она просто выходит с exit(1) . Я тестировал Valgrind, и, хотя это происходит, ошибок нет, но я вижу, что есть еще доступные x байты. Поэтому мой вопрос: стоит ли программисту освободить память, прежде чем нажать exit() или OS будет заботиться об этом?

Недопустимый бесплатный () / delete / delete / realloc () в __libc_freeres ()

Я компилирую код с флагом -g и -O0. См. Вывод valgrind ниже. Я только хочу знать, могу ли я увидеть, что недействительно освобождено? Я вижу только это: ==2566== Invalid free() / delete / delete[] / realloc() ==2566== at 0x4A21244: free (vg_replace_malloc.c:468) ==2566== by 0x500FB7A: free_mem (in /lib64/libc-2.4.so) ==2566== by 0x500F781: __libc_freeres (in /lib64/libc-2.4.so) ==2566== by […]

Почему чтение поля указателя структуры недопустимо?

Запустив программу в Valgrind , он говорит, что на указателе перехода структуры есть «Недопустимое чтение размера 8». Это как-то связано с calloc? Это (ноль), если оно читается как есть. Имея структуру (называемую trie), она используется следующим образом: #include #include #include #include const int MAX_SIZE = 20; struct _trie { int maxNode; int nextNode; int** transition; […]

Как исправить ошибку сегментации в моей программе на C

У меня есть трудное время для отладки следующей программы, написанной для knapSack #include #include #include “timer.h” #define MAX(x,y) ((x)>(y) ? (x) : (y)) #define table(i,j) table[(i)*(C+1)+(j)] int main(int argc, char **argv) { FILE *fp; long N, C, opt; // # of objects, capacity int *weights, *profits, *table, *solution; // weights and profits int verbose; // […]