Я недавно обновил тестовый дистрибутив, который теперь использует 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 *'
Я запутался, потому что уверен, что раньше это было ошибкой, а компиляция никогда бы не завершилась. Разве это не только усложнит жизнь программистам на Си?
Могу ли я изменить его обратно на ошибку, не совершая при этом кучу других предупреждений?
Или я теряю сюжет, и это всегда было предупреждением?