简单字符串操作中的分段错误

时间:2011-03-02 22:38:19

标签: c gcc segmentation-fault

该程序在执行时给出了分段错误。我该如何解决这个问题?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
  int bufsize = 1024;
  char *buf;
  char *msg="GET /dumprequest HTTP/1.1";
  memset (buf,0, bufsize);
  strcpy(buf,msg);
  puts(buf);
  return 0;
}

4 个答案:

答案 0 :(得分:6)

您没有为buf分配内存。尝试:

const int bufsize = 1024;
char buf[bufsize];

答案 1 :(得分:1)

memset()strcpy()的调用正在尝试写入指向随机位置而不是malloc() ed内存块的指针,这肯定会导致问题

答案 2 :(得分:1)

你需要为buf分配一些内存。

buf = (char *) malloc (bufsize);

当你完成时:

free (buf);

或者使它成为一个char数组。

答案 3 :(得分:-1)

在Ubuntu 10.10上使用gcc,上面的代码可以正常工作。

malloc()和free()可用于分配一些内存。 在函数结束时调用free()。​​

buf = (char *) malloc (bufsize);

这将为buf分配大小为1024的内存。