>Нигде в манах по iconv ничего не нашел про то, что указатели
>на длины буферов можно ставить в NULL. Спасибо за помощь :)
mallopt() не при чём - он ведёт себя как положено.
Проспался, стал менять new..delete на malloc()..free и заметил свою ламерскую ошибку - массивы должны создаваться и удаляться с помощью new []..delete[]. Теперь всё работает и чудесно конвертируется.
Из man iconv(3):
A third case is when inbuf is NULL or *inbuf is NULL, and outbuf is NULL or *outbuf is NULL. In this case, the iconv function sets cd's conversion state to the initial state.
Строку nrc = iconv(cd, NULL, NULL, NULL, NULL); я добавлял от безысходности, в реальной жизни трудно придумать случай, когда она действительно понадобится.