Есть ли какая-либо опция компилятора в GCC для проверки ошибок памяти во время компиляции? - PullRequest
1 голос
/ 31 декабря 2011

Я компилировал эту программу, и компиляция прошла нормально.В тот момент, когда я его выполнил, произошел сбой с ошибкой free(): invalid pointer.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char *p = NULL;
    if ((p = (char *) malloc((int)sizeof(char) * 100)) == NULL) {
        printf("ERROR: unable to allocate memory\n");
        return -1;
    }
    p += 50;
    free(p);    
    return 0;
}

Я скомпилировал с помощью команды gcc -o memtest m.c.

Существуют ли какие-либо опции компилятора GCC, которые будут выдавать предупреждение / ошибку / указание об этих недопустимых ошибках указателя во время компиляции?

Ответы [ 3 ]

5 голосов
/ 31 декабря 2011

Нет. Используйте Электрический забор или Valgrind .

2 голосов
/ 31 декабря 2011

время компиляции нет, время выполнения - да: http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging

Самое близкое время компиляции: http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html

1 голос
/ 31 декабря 2011

Нет, такие ошибки не обнаруживаются во время компиляции, потому что на практике такое обнаружение будет срабатывать только в самых тривиальных случаях, как в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...