Программа падает, когда я пытаюсь delete[]
массив, который был выделен с new[]
.Я не вижу причин, почему это не должно работать.Массив размещается в методе и удаляется в конце, он локальный, все должно быть хорошо, но это не так.Я не вижу ни одного исключения, которое было выброшено при отладке, поэтому я не знаю, где копать.Через отладку я вижу, что сначала происходит сбой delete[]
оператора.Без этих двух delete
сбоев не происходит, но я не хочу, чтобы что-то всплывало в памяти.
void Atbash::EncryptString(string t)
{
char *cOriginalString;
char *cEncryptedString;
unsigned int originalStringLength;
unsigned int i;
unsigned short j = 0;
originalString = t;
originalStringLength = originalString.length();
cOriginalString = new char(originalStringLength + 1);
cEncryptedString = new char(originalStringLength + 1);
strcpy_s(cOriginalString, originalStringLength + 1, originalString.c_str());
cOriginalString[originalStringLength] = '\0';
for (i = 0; i < originalStringLength; i++)
{
while (cOriginalString[i] != alphabet[j])
{
j++;
}
cEncryptedString[i] = alphabet[N - j - 2];
j = 0;
}
cEncryptedString[originalStringLength] = '\0';
encryptedString = cEncryptedString;
delete[] cOriginalString;
delete[] cEncryptedString;
}
originalString
и encryptedString
относятся к типу "string".