Я уверен, что проблема в следующем:
What happens if you pass a negative value for 'size'?
Другая возможная проблема заключается в том, что вы не проверяете *qptr
для NULL
после выделения, однако, редко это будет проблемой в реальном коде, если это когда-либо произойдет, у вас есть другие ошибки, о которых нужно беспокоиться.