ИМХО, чек для 0xdeadbeef
должен читаться как
if (*(unsigned*)c == 0xdeadbeef ){
и чек на вместимость
if (*(int*)(c - sizeof(int))< new_capacity){
Как у вас есть, вы читаете отдельные символы вместо целых, и я думаю, что вы не собирались этого.
(я предполагаю, что myStruct
должен быть указателем на строку ptr
в struct Mystruct
- это единственный способ, который имеет для меня смысл)
Также обратите внимание, что это на самом деле не переносимый Си, потому что компилятор может свободно добавлять отступы для выравнивания членов структуры - возможно, подход Беррета будет заключаться в использовании макроса offsetof
и получении указателя на всю структуру. 1016 *