gpt4 book ai didi

c - for 循环中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:29:23 25 4
gpt4 key购买 nike

我有一个我无法理解的奇怪行为......两 block 代码都来自同一个程序......我只是评论其中一个......我正在将一个 mac 地址转换成一个字节数组中的字符串...这是有效的代码:

unsigned char ssidHex[6];
ssidHex[0] = hexToByte(mac[0], mac[1]);
ssidHex[1] = hexToByte(mac[2], mac[3]);
ssidHex[2] = hexToByte(mac[4], mac[5]);
ssidHex[3] = hexToByte(mac[6], mac[7]);
ssidHex[4] = hexToByte(mac[8], mac[9]);
ssidHex[5] = hexToByte(mac[10], mac[11]);

这是出现段错误的代码:

unsigned char ssidHex[6];
for (int y = 0; y < 6; y++)
ssidHex[y] = hexToByte(mac[y * 2], mac[y * 2 + 1]);

如你所见,我不会越界......你能解释一下哪里出了问题吗?

非常感谢

更新:

完整的代码相当大,反正“mac”来自过程的调用:

void compute(char *mac)

来自命令行,它是一个没有双点的 mac 地址,例如“DEADDEADDEAD”,这是 hexToByte 的定义:

unsigned char hexToByte(unsigned char buf1, unsigned char buf2) {
unsigned char temp[5] = { '0', 'x', buf1, buf2, 0};
return strtol(temp, NULL, 0);
}

最佳答案

And here's the code that segfaults

由于有效代码和获得 SIGSEGV 的代码之间没有真正的区别,我们必须得出结论,问题出在其他地方

很遗憾,您无法显示其余代码,因此我们也无法告诉您在哪里查看。

如果您使用的系统支持 Valgrind 或 AddressSanitizer,其中一个工具很可能会告诉您确切问题出在哪里。

关于c - for 循环中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38210799/

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