Недавно я обновился до тестового дистрибутива, который теперь использует GCC 4.4.3. Теперь, когда я все настроил, я вернулся к кодированию и создал свой проект, и я получаю одно из этих ужасных сообщений:
*** glibc detected *** ./boxyseq: free(): invalid pointer: 0x0000000001d873e8 ***
Я абсолютно точно знаю, что здесь не так, но был несколько сбит с толку, когда увидел свой код C, где я вызываю функцию, которая освобождает динамически выделяемую структуру данных - я передал ей несовместимый тип указателя - указатель на совершенно другую структуру данных .
warning: passing argument 1 of 'data_A_free' from incompatible pointer type
note: expected 'struct data_A *' but argument is of type 'struct data_B *'
Я в замешательстве, потому что уверен, что раньше это было бы ошибкой, и компиляция никогда бы не завершилась. Не усложнит ли это жизнь программистам на C?
Могу ли я изменить его обратно на ошибку, не делая при этом целую кучу других ошибок предупреждений?
Или я теряю сюжет, и это всегда было предупреждением?