这段代码好吗?
void function (char* reqData) {
char serverData[130]={0};
uint8_t buffer[128] = {0};
uint32_t len = wifi.recv(&mux_id, buffer, sizeof(buffer), 100);
//fill the serverData in some for loop
for(uint32_t i = 0; i < len; i++)
serverData[i]=(char)buffer[i];
serverData[len ] = '\0';
strcpy(reqData,serverData); // * my concern !
}
并且主要使用:
//some global var
char *incomingData={0};
//then
function(incomingData);
它导致我无法解释的问题(硬件上的奇怪崩溃)
答案 0 :(得分:2)
好吧
strcpy(reqData,serverData); // * my concern !
reqData
指向incomingData
指向的位置:
char *incomingData={0};
但是你没有正确地初始化incomingData
,它没有指向你可以写东西的记忆。另外= {0}指针的初始化对我来说似乎有点奇怪。如果您事先了解尺寸,可以将其初始化如下所示。
char incomingData[SIZE] = {0};
内部功能:
char serverData[130]={0};
serverData
长度为130,请注意缓冲区溢出,如果在下一行接收到大于130的数据会怎样?