/* DECLARED FUNCTIONS */
char *DetectDevice(void);
int main(int argc, char *argv[])
{
char *PathToDevice;
PathToDevice = DetectDevice();
...
if(close(fd) == -1)
{
printf("Error Closing Port");
}else
{
printf("whihi!");
free(PathToDevice);
}
return 0;
}
char *DetectDevice(void)
{
char *Usbs = malloc(1024);
Usbs = "/dev/ttyUSB1";
return Usbs;
}
Run Code Online (Sandbox Code Playgroud)
错误消息:*glibc检测到* ./test:free():无效指针:0xbec1b504
顺便说一下...这个程序是在覆盆子pi上编译的!
char *DetectDevice(void)
{
char *Usbs = malloc(1024);
Usbs = "/dev/ttyUSB1";
return Usbs;
}
Run Code Online (Sandbox Code Playgroud)
在char *DetectDevice(void)您为 您返回的分配 "/dev/ttyUSB1"字符串地址Usbs.并尝试释放.Usbsmalloc 存储的地址被Usbs = "/dev/ttyUSB1";语句覆盖,Usbs具有该常量字符串的地址.
"/dev/ttyUSB1"是不是动态分配你错误地试图释放!
这样做.
char *DetectDevice(void)
{
char *Usbs = malloc(1024);
strcpy(Usbs,"/dev/ttyUSB1");
return Usbs;
}
Run Code Online (Sandbox Code Playgroud)