warning C4172: returning address of local variable or temporary - это предупреждение из Си++ , но оно справедливо и в Си++ .
нельзя возвращать указатель на переменную инициализированную в области вызываемой фукции - так как в этом случае теряются - позже напишу подробнее.
http://forum.pellesc.de/index.php?topic=4550.new;topicseen#new