Вы пропали без вести
key = malloc(sizeof(Poly));
Объявление key
дает вам указатель, но не указывает на правильное местоположение. Разыменование key
вызывает неопределенное поведение.
EDIT
Кроме того, похоже, что heapsize
является глобальной константой, а A
является указателем на кучу. Кажется странным иметь глобальную переменную записи размером с неглобальный.
Я бы сделал heapsize
переменной с той же областью, что и A
, и передал бы указатель на нее в качестве аргумента функциям, имеющим дело с A
.