该程序在执行时给出了分段错误。我该如何解决这个问题?
#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;
}
答案 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的内存。