0

我的 C 代码中有一个错误“Segmentation Fault SigSegv”:

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); 也没有用

4

1 回答 1

0

好吧,您没有在 main 旁边添加其他功能,所以我无法弄清楚整个画面。

基本上,由于引用已经释放的内存或以错误的方式使用指针导致的分段错误。

malloc 的用法可能是这样的: char s; s=(char )malloc(sizeof(char)*size);

您实际上不必进行选角,但这不是问题。

于 2013-07-22T17:27:16.410 回答