Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        5年前关闭。
                                                                                            
                
        
我有一个指向指针的数组:

void ** buckets.


这些指针中的每一个都指向某个内存块,其中包含一个指向另一个内存块的指针。

我试图得到一个指向这样的内存斑点的指针之一:

void *cell = cm->buckets[0] // for the first blob it is pointing to.


但是,它给我带来了段错误,而gdb并不是很有用。为什么会发生这种情况?处理此案的正确方法是什么?

最佳答案

检查存储在buckets中的地址值。最有可能的是,它尚未初始化(使用newmalloc等),并且buckets内的地址是一些受随机保护的内存地址。

buckets[0]等效于*buckets或取消引用buckets中的值。因此,系统尝试访问此受保护地址的内容,从而导致段错误。

10-05 19:51