Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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/6/cplusplus/158.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
Android c+中的SIGABRT+;IOS上的代码_Android_C++_Ios - Fatal编程技术网

Android c+中的SIGABRT+;IOS上的代码

Android c+中的SIGABRT+;IOS上的代码,android,c++,ios,Android,C++,Ios,你好! 我有一个C++库和C包装器,所以它可以在Android和iOS中编译和使用。 当我在linux和android上运行我的代码时,它工作得很好,但在ios上我有SIGABRT 功能包括: int getBytesFromBinary(char *ptr, size_t size, char * const out) { std::string binary(ptr, size); std::string ret_string = NAMESPACE::getString

你好! 我有一个C++库和C包装器,所以它可以在Android和iOS中编译和使用。 当我在linux和android上运行我的代码时,它工作得很好,但在ios上我有SIGABRT

功能包括:

int getBytesFromBinary(char *ptr, size_t size, char * const out) {
    std::string binary(ptr, size);
     std::string ret_string =  NAMESPACE::getStringFromBinary(binary);
   //checkings and return
}

std::string getStringFromBinary(const std::string &binary) {
    std::string out_str = "";
    MyObject object;
    //parce binary to object
    ....
    //
    out_str.append(std::string((const char*)object.data.ptr, object.data.len));

    return out_str;
}
错误:

   malloc: *** error for object 0x1001260cc: pointer being freed was not allocated
但如果我们改变,错误就会消失

out_str.append(...) 
return out_str;
简单地

return std::string((const char*)object.data.ptr, object.data.len);
为什么会这样?
谢谢。

您能给我们看一下
//将二进制解析为对象
中的代码吗。我想你在某处覆盖了一些内存,ios正在设法捕获它。问题可能出在MyObject中,而你没有向我们展示该代码。在//将二进制解析为对象中有另一个库-不是我的库。正如我所说的,在linux和android上没有问题。不同的编译器?Arch issuer?您的代码中的某个地方有一个bug,导致未定义的行为和内存损坏。只是因为C++程序崩溃了一个特定的点并不意味着bug的所在。取消对未初始化指针的引用,或运行到数组末尾,或无数其他典型类型的未定义行为都可能发生在任何地方,执行可能会持续到该点之后,当代码试图使用损坏的内存时,代码最终会崩溃。欢迎使用C++。你可以在代码> > /解析二进制到对象< /代码>中显示代码。我想你在某处覆盖了一些内存,ios正在设法捕获它。问题可能出在MyObject中,而你没有向我们展示该代码。在//将二进制解析为对象中有另一个库-不是我的库。正如我所说的,在linux和android上没有问题。不同的编译器?Arch issuer?您的代码中的某个地方有一个bug,导致未定义的行为和内存损坏。只是因为C++程序崩溃了一个特定的点并不意味着bug的所在。取消对未初始化指针的引用,或运行到数组末尾,或无数其他典型类型的未定义行为都可能发生在任何地方,执行可能会持续到该点之后,当代码试图使用损坏的内存时,代码最终会崩溃。欢迎来到C++。