android - 在 Android NDK 中读取指向指针值的指针会崩溃

标签 android c++ c pointers android-ndk

我正在尝试发送一个指向函数中指针 ptr 的指针。指针

    int ret = funcptrptr(unsigned char** ptr);

在 funcptrptr() 内部,我将新的信息值分配给 ptrptr 。我什至打印了内容,它似乎正在打印

从此函数调用返回时,我尝试将 ptrptr 取消引用到 p,如下所示,

  unsigned char* p = *ptr;

这与 SIGEGV 崩溃了。为什么 ?

funcptrptr() 内的代码是这样的

*ptrptr  = u_build_value(crypted_vector,random_vector); 

内部函数 u_build_value 实际上使用 malloc 进行分配并将内容作为 unsigned char * 返回

========

解决方案是将内存分配给 ptrptr 变量,正如下面有人指出的那样。有效。谢谢。

最佳答案

假设您在调用 u_build_value 之前没有执行任何操作,则您将尝试取消引用不指向该行任何内容的指针:

*ptrptr  = u_build_value(crypted_vector,random_vector); 
^here your are dereferencing a pointer causing undefined behaviour

将代码更改为:ptrptr = u_build_value(crypted_vector,random_vector);,或者如果您想取消引用它,则为 ptrptr 分配一些内存。

关于android - 在 Android NDK 中读取指向指针值的指针会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19721825/

相关文章:

c++ - 为什么 i += a[i]++ 在使用 Visual C++ 递增 a[i] 之前分配 i?

android - 应用程序 :theme now is deprecated

android - 禁用后如何启用用户可缩放(视口(viewport)属性)?

c++ - 从 C++ 库通知 Objective C

c++ - CMake source_group() 在分层项目设置中无法正常工作

c - 为什么我会得到负值?

android - 我如何从一个 Activity 导航到另一个 Activity

android - 如何将 SQLite 数据库传输到 Android 手机上的 Web 服务器

c++ - strncpy() 获取字符串结尾

c - 将开源程序集成到我自己的 C 语言中