Вызывает ли освобождение int *, который был назначен для char * (выделенного с помощью `malloc`), неопределенное поведение?
Название может сбивать с толку. предполагатьstr
указатель, выделенныйmalloc
. ptr
типаint*
, присваивается ему и освобождается, как показано фрагментом кода ниже:
char* str = malloc(64);
int* ptr = str;
free(ptr);
Я пытался скомпилировать приведенный выше код. Это просто дает предупреждение:
source_file.c: In function ‘main’:
source_file.c:10:16: warning: initialization from incompatible pointer type
int* ptr = str;
^
Вызывает ли приведенный выше код неопределенное поведение?
Освобождает ли приведенный выше фрагмент кода память, выделеннуюmalloc
заstr
?