我正在尝试发送一个指向函数中指针 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/