gpt4 book ai didi

c - 为什么这个小 C 程序在 ESP32 上会崩溃?

转载 作者:行者123 更新时间:2023-12-01 22:00:17 24 4
gpt4 key购买 nike

我正在使用 Espresif ESP32 WROOM 开发板。我试图分析我使用 GDB 硬件调试器得到的错误,但我只收到发生错误的行,没有错误描述。

这是我的小程序:

typedef unsigned char u08;

void app_main() {
static char *mac_str = "00:00:00:00:00:00";
static u08 mac_addr[6] = {0x1a, 0x11, 0xaf, 0xa0, 0x47, 0x11};
net_dump_mac(mac_addr);
}

void net_dump_mac(const u08 *in) {
int pos = 0;
for (int i=0; i<6; i++) {
byte_to_hex(in[i], (u08 *)(mac_str+pos));
pos += 3;
}
uart_send(mac_str);
}

void byte_to_hex(u08 in, u08 *out) {
out[0] = nibble_to_hex(in >> 4); // <= crash occurs here !
out[1] = nibble_to_hex(in & 0xf);
}

u08 nibble_to_hex(u08 in) {
if (in < 10)
return '0' + in;
else
return 'A' + in - 10;
}

知道我在这里做错了什么吗?

最佳答案

char *mac_str = "00:00:00:00:00:00"; 将文字字符串分配给 mac_str。文字在许多体系结构上是只读的。试图修改它会导致内存管理器不允许它,通常会导致发生段错误或其他异常。

相反,做:

char mac_str[] = "00:00:00:00:00:00";

这将创建一个数组,该数组使用右侧的文字进行初始化,并复制到您的数组中。该数组将是文字字符串的大小,包括空终止符。该数组变量是可修改的。

关于c - 为什么这个小 C 程序在 ESP32 上会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53726862/

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