Столкнулся с переполнением куча во время итерации с указателямиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Столкнулся с переполнением куча во время итерации с указателями

Сообщение Anonymous »

У меня есть программа с целью поиска GCD двух строк S и t , то есть вернуть самый большой x такой, что x | s и x | t . При тестировании этой программы я столкнулся с кучей-буфером-переполнением . Я знаю, что эта ошибка подразумевает ошибку сегментации. Тем не менее, я не уверен, где в программе возникает эта ошибка. < /P>
string gcdOfStrings(string str1, string str2) {

const char *ptrI = str1.c_str(), *ptrJ = str2.c_str();
char *str3 = new char[1000 + 1], *ptrK = str3;
bool boolI = false, boolJ = false;

while (*ptrI == *ptrJ) { *ptrK++ = *ptrI++; }

ptrI = str1.c_str();

while ( (*ptrI != '\0') || (*ptrJ != '\0') || (*ptrK != '\0') ) {

if (*ptrK == '\0') { ptrK = str3; }

if (*ptrI != *ptrK) { boolI = true; }
if (*ptrI != '\0') { ptrI++; }

if (*ptrJ != *ptrK) { boolJ = true; }
if (*ptrJ != '\0') { ptrJ++; }

if ( (boolI != true) && (boolJ != true) ) { *ptrK = '\0'; string t(str3); delete[] str3; return t; }

ptrK++;
}

return "";
}

Пример 1:
Input: str1 = "ABCABC", str2 = "ABC"
Output: "ABC"

Пример 2:
Input: str1 = "ABABAB", str2 = "ABAB"
Output: "AB"

Пример 3:
Input: str1 = "ABABCB", str2 = "ABAB"
Output: ""


Подробнее здесь: https://stackoverflow.com/questions/780 ... h-pointers
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»