调用 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);
我的代码中有一小部分是用 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);