Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在发布模式下检测到缓冲区溢出-linux_C++_Linux_Zlib_Buffer Overflow_Libc - Fatal编程技术网

C++ 在发布模式下检测到缓冲区溢出-linux

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() +

好的。。我制作了一个系统,它使用zlib解压字符串。。。我认为它可以工作,但我的base64转换器有问题,所以我不能确定数据是否正确。。。它适用于非常小的字符串,即“help”,但该字符串会导致缓冲区溢出 “eJxjZMAOmHCIM+mqz8ehzgreaakaba=”


问题是,通过使用
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;