= (int *) malloc(8);
в оба указателя выделено по 8 байт, два разных типа, в память по указателю char_ptr я смогу записать 8 символов ибо char занимает 1 байт
а int то требует 4 байта, то это вообще глупо выделять 8 байт, когда надо 4 ?
Выражения с malloc: 1) выделит 8 байтов и вернёт адрес первого из них. Компилятор проследит, что это действие применяется к указателю на поле char. 2) выделил 8 байтов и вернёт адрес первого из них. Компилятор проследит, что это действие применяется к указателю поля int. Считай, что в первом случае ты получил массив 8 char; во втором случае 2 int. Но так делать плохо. Правильнее не гадать, сколько занимает int, у указать компилятору сделать это за тебя Int_ptr = malloc(sizeof(int) * 2)
Обсуждают сегодня