我有一个错误"分段错误SigSegv"在我的C代码中:
int main(void)
{
HANDLE h;
char *query = malloc(10);
h=InitPort("\\\\.\\COM2",57600);
query = 0;
query=getenv("QUERY_STRING");
if (h==INVALID_HANDLE_VALUE)
{
printf("Error\n");
return 0;
}
if (strstr(query,"COMM=W")!=0)
{
SendData(h,'W');
}
return 0;
}
我读了很多关于分配内存的意见,最后使用了malloc()函数,但它没有用。
我的代码中的所有函数:
HANDLE InitPort(char* PORT,unsigned long BAUD_RATE)
{
HANDLE h;
DCB d;
h=CreateFileA(PORT,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0, 0);
GetCommState(h,&d);
d.BaudRate=BAUD_RATE;
d.fBinary=1;
d.fParity=0;
d.ByteSize=8;
d.StopBits=ONESTOPBIT;
SetCommState(h,&d);
return h;
}
void SendData(HANDLE h,unsigned char byte)
{
unsigned long n;
WriteFile(h,&byte,1,&n,NULL);
}
和 * char查询; 查询=(char)的的malloc(的sizeof(char)的 10); 也没有工作
答案 0 :(得分:0)
嗯,你没有在main旁边添加你的其他功能,所以我无法指出整个画面。
基本上,通过重新释放已经以错误方式释放或使用指针的内存来实现Segmantation故障。
malloc的用法可能是这样的: char s; S =(炭)的malloc(的sizeof(char)的大小*);
你真的不需要进行投射,但这不是问题。