我使用 sprintf 创建一个 char 数组,以后可以将其写出作为对系统的调用。
char buffer[80];
char *ip = inet_ntoa(sa.sin_addr);
short port = 1;
sprintf(buffer, "Command with IP %s and port %d",ip, port);
system(buffer);
现在理论上这个缓冲区应该有足够的空间分配给这个字符串。但不知何故,由于 char 指针,我仍然得到* stack smashing detected *
一个错误。
sprintf 不能将 char 指针作为输入处理,可能是因为它本身有很大的分配?
编辑:
事实证明,缓冲区毕竟很小,至少对于某些参数而言。