gpt4 book ai didi

C++ 删除 [] 崩溃

转载 作者:行者123 更新时间:2023-11-30 01:36:05 27 4
gpt4 key购买 nike

当我尝试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;
}

originalStringencryptedString 都是“字符串”类型。

最佳答案

您没有分配 char[],只是一个普通的 char。请注意,您应该使用方括号 ([]) 而不是圆括号 (()):

cOriginalString = new char[originalStringLength + 1];
// Here ------------------^------------------------^

cEncryptedString = new char[originalStringLength + 1];
// And here ---------------^------------------------^

关于C++ 删除 [] 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com