Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
我试图在函数中发送一个指向指针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分配的,并将内容返回为未签名的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分配一些内存(如果要取消引用)。

09-25 19:04