Лучший вопрос - почему он вообще работает: совпадение, что int
и char*
имеют одинаковый размер. Вы никогда не должны предполагать это, должны избегать ложных предположений типов и всегда использовать правильные типы.
На моем Mac int
- это 4 байта, а char*
- это 8 байтов. Таким образом, помещение 4 байтов в стек и удаление 8 байтов с последующим использованием их в качестве адреса является причиной ошибки сегментации.