-2

我正在尝试在函数中发送指向指针 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变量,如下面的某个人所指出的。有效。谢谢 。

4

1 回答 1

2

假设您在调用之前没有做任何事情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如果您想取消引用它。

于 2013-11-01T06:35:17.427 回答