gpt4 book ai didi

c++ - 动态内存分配导致访问冲突

转载 作者:行者123 更新时间:2023-11-30 00:53:55 25 4
gpt4 key购买 nike

当我为我的十六进制数组中的缓冲区分配空间时,我的代码不断中断(即向我抛出访问冲突异常)。

我在 main 中将十六进制数组声明为两星指针,并通过引用将其传递。

ma​​in.cpp 中的某处

char ** hexArray = nullptr;

fileio.cpp 中的某处

void TranslateFile(char * byteArray, char **& hexArray, int numberOfBytes, char buffer[])
{
int temp = 0;

//Convert bytes into hexadecimal
for(int i = 0; i < numberOfBytes; i++)
{
//Convert byteArray to decimal
atoi(&byteArray[i]);

//Set temp equal to byteArray
temp = byteArray[i];

//Convert temp to hexadecimal and store it in hex array
itoa(temp, buffer, 16);

//Allocate room for buffer
hexArray[i] = new char[strlen(buffer) + 1]; //CODE BREAKS HERE

//Copy buffer into newly allocated spot
strcpy(hexArray[i], buffer);
}
}

最佳答案

char ** hexArray = nullptr;

hexArray 未初始化。

hexArray[i] = new char[strlen(buffer) + 1]; //CODE BREAKS HERE

您取消引用 hexArray,但它未初始化,因此您的程序会产生未定义的行为。您需要对其进行初始化,并且根据您的代码示例,它必须指向至少 numberOfBytes 元素。

hexArray = new char *[numberOfBytes];

现在 hexArray 是一个指向 numberOfBytes 未初始化指针的初始化指针。

关于c++ - 动态内存分配导致访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262377/

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