调用 printf %s 时出现分段错误

Segmentation fault when printf %s is called

我的代码中有一小部分是用 C 编写的。

read(fd,&bufferSize,sizeof(bufferSize);
buffer = malloc(bufferSize);
read(fd,&buffer,bufferSize);
printf("%d",buffer);
fflush(stdout);
printf("%s",buffer);
fflush(stdout);

当我用 %d 格式打印缓冲区时,它工作正常,但是当我尝试将缓冲区视为字符串时,出现分段错误。即使我使用 strcmp 或类似的其他函数,也会出现 SIGSEGV。

read(fd,&buffer,bufferSize);

这里,buffer是你缓冲区的起始地址。所以,当你调用上面的函数时,你作为传入你的地址的地址。

由此可见为什么会出现段错误,因为传入的地址并不是缓冲区的实际地址。将该行替换为

read(fd,buffer,bufferSize);