C++ 在发布模式下检测到缓冲区溢出-linux
好的。。我制作了一个系统,它使用zlib解压字符串。。。我认为它可以工作,但我的base64转换器有问题,所以我不能确定数据是否正确。。。它适用于非常小的字符串,即“help”,但该字符串会导致缓冲区溢出 “eJxjZMAOmHCIM+mqz8ehzgreaakaba=”C++ 在发布模式下检测到缓冲区溢出-linux,c++,linux,zlib,buffer-overflow,libc,C++,Linux,Zlib,Buffer Overflow,Libc,好的。。我制作了一个系统,它使用zlib解压字符串。。。我认为它可以工作,但我的base64转换器有问题,所以我不能确定数据是否正确。。。它适用于非常小的字符串,即“help”,但该字符串会导致缓冲区溢出 “eJxjZMAOmHCIM+mqz8ehzgreaakaba=” 问题是,通过使用sizeof(s)可以得到类std::string的大小,而不是需要输入的字符串。尝试替换此: int sizeOfS = sizeof(s); 为此: int sizeOfS = s.length() +
问题是,通过使用
sizeof(s)
可以得到类std::string
的大小,而不是需要输入的字符串。尝试替换此:
int sizeOfS = sizeof(s);
为此:
int sizeOfS = s.length() + 1;
“+1”表示空终止符,它会自动附加到
c_str()
中,您不应该基于s.size()而不仅仅是sizeof吗?谢谢。。这就是问题所在,我想知道为什么,在调试中它很好
int sizeOfS = sizeof(s);
int sizeOfS = s.length() + 1;