Почему в C++ некорректная работа с переменными и указателями?
Почему в C++ некорректная работа с переменными и указателями? - потому что тот, кто на нем пишет не умеет ими пользоваться.
Как я написал выше - скомпилил это дело под gcc.
UPD:
Проблема решилась заменой непонятной strcat_s на стандартную strncpy(_string, _buffer, _lenght);
UPD2:
Всю суть ошибки можно осознать тут valera.asf.ru/cpp/book/c08.shtml 
Конкретно пункт "8.3.1. Автоматические объекты"После возврата в main() mainResult указывает на область памяти, не отведенную никакому объекту. (В данном примере эта область все еще может содержать правильное значение, поскольку мы не вызывали других функций после trouble() и запись ее активации, вероятно, еще не затерта.) 