这个密码好吗?

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);

它给我带来了无法解释的问题(硬件上奇怪的崩溃)

最佳答案

好吧,这里

strcpy(reqData,serverData);       // * my concern !

reqData指向incomingData指向的位置:
char *incomingData={0};

但您没有正确初始化incomingData,它没有指向可以写入内容的内存指针的初始化对我来说也有点奇怪。你可以像下面这样初始化它-如果你事先知道大小的话。
char incomingData[SIZE] = {0};

内部功能:
char serverData[130]={0};

serverData的长度是130小心缓冲区溢出,如果在下一行接收到大于130的数据怎么办?

10-07 13:22