В вашей программе переполнение буфера, где-то еще в коде, который вы не опубликовали. Проблема в том, что вы не выделяете достаточно памяти - вы не оставляете место для нулевого терминатора в конце вашей строки. Вы должны изменить распределение на это:
word = new char[strlen(someword) + 1]; // +1 for null terminator
...
strcpy(word, someword);
Вы должны быть благодарны, что ваша среда выполнения C обнаружила вашу ошибку. В большинстве случаев переполнение однобайтового буфера приведет к повреждению памяти без вывода сообщений и не будет обнаружено намного позже, если вообще когда-либо.
Вам также следует рассмотреть возможность использования класса std::string
, который автоматически управляет памятью, чтобы вам не приходилось сталкиваться с такими тонкими проблемами, как эта.