gpt4 book ai didi

c - 在取消引用之前为未初始化的指针赋值

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

我发现了一个代码片段,其中声明了一个 char 指针(例如 *pData),但没有初始化为 NULL。

char *pData, *pData2;
char string[10] = "Hello"
pData2 = &string[0];
SomeFuntionToAssignValue(pData2, &pData);

SomeFuntionToAssignValue(char *pData2, char **pData)
{
if (something)
{
*pData = pData2;
}
else if (something)
{
*pData = &pData2[some calculation]
}
}

在调用函数 SomeFuntionToAssignValue() 后,取消引用 pData 是否可以在任何时间点抛出“内存访问异常”错误?

因为在编译或本地测试期间(这里的测试是在可以随时重新加载的目标中完成的,因此通常内存损坏的机会会减少),我们没有遇到任何“内存访问异常”错误。

但是在现场环境测试过程中,目标至少一周没有重新加载,抛出了“内存访问异常”错误。

那么,有没有可能不这样做 char *pData = NULL可能导致“内存访问异常”错误?

最佳答案

是的,有机会,因为您的 SomeFuntionToAssignValue 并不总是分配给 *pData。将 pData 初始化为 null可以防止出现问题,因为其他代码可能正在检查 NULL 但不能检查其未初始化的值。但这一切都取决于您尚未显示的代码;一般来说,这种模式没有任何问题。

关于c - 在取消引用之前为未初始化的指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46598354/

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