Я не думаю, что ваш код делает то, что вы хотите, и на самом деле, если он скомпилирован, он взорвется.
char* str[strlen(m_pString)]; // you've made an array of X C strings where
// X is the length of your original string.
int i=0;
str[strlen(m_pString)]=m_pString; // You've attempted to assign the C string in your array
// at location X to point at you m_pString. X is the
// same X as before and so is 1 past the end of the array
// This is a buffer overrun.
Я думаю, что вы на самом деле хотели скопировать содержимое m_pString в str. Вы бы сделали это так:
char * str = new char[strlen(m_pString)];
memcpy(str, m_pString); // I may have the operands reversed, see the docs.
Самый простой способ сделать это - перестать использовать строки C и использовать строки C ++:
std::string str = m_pString;
Есть и другие проблемы, но это должно заставить вас больше ориентироваться в правильном направлении.