Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
用zlib实现简单的android二进制崩溃_Android_C++_Cmake_Android Ndk_Zlib - Fatal编程技术网

用zlib实现简单的android二进制崩溃

用zlib实现简单的android二进制崩溃,android,c++,cmake,android-ndk,zlib,Android,C++,Cmake,Android Ndk,Zlib,我用CMake制作了一个简单的android可执行文件,它与ndk上的本机zlib链接。一切编译都正确,但调用deflateInit时,我遇到了一个分段错误 代码如下: main.cpp #包括 #包括 int main() { z_溪strm; deflateInit(&strm,Z_DEFAULT_COMPRESSION); std::cout事实证明,将z_stream设置为零可以解决问题 #包括 #包括 #包括 int main() { z_溪strm; std::memset(&str

我用CMake制作了一个简单的android可执行文件,它与ndk上的本机zlib链接。一切编译都正确,但调用
deflateInit
时,我遇到了一个分段错误

代码如下:

main.cpp

#包括
#包括
int main()
{
z_溪strm;
deflateInit(&strm,Z_DEFAULT_COMPRESSION);

std::cout事实证明,将
z_stream
设置为零可以解决问题

#包括
#包括
#包括
int main()
{
z_溪strm;
std::memset(&strm,0,sizeof(z_流));
deflateInit(&strm,Z_DEFAULT_COMPRESSION);

std::cout真正的问题是deflate函数在输入时读取流的内部。显然,您为函数提供了一个带有随机垃圾的结构。将结构设置为所有零将初始化函数读取的成员,使其成为正确的值。状态是
z_stream
中的字段将在调用时初始化ing
deflateInit
。通常,当任何API需要指向结构的指针时,请务必仔细阅读文档,了解函数是否将读取结构的各个成员以执行内部管理。
cd build
adb push main /data/local/tmp/.
adb shell
shell@device:/ $ cd /data/local/tmp
shell@device:/ $ ./main
[1] + Stopped (signal)     ./main