c - 指针/结构问题 C

标签 c pointers constructor segmentation-fault

我有以下段错误代码,我完全不知道为什么。任何帮助将不胜感激。

当我这样做时会发生段错误(检查是否所有内容都已正确初始化)。没有打印任何内容,因此它在第一行出现段错误。不幸的是,我无法使用 valgrind,因为此代码位于我无法访问的沙箱中,因此无法检查那里的问题。

for (i = 0 ; i<nb_read ; i++) {

 fprintf(stdout, "Read Lock i %d  %p \n ",i, nap->read_buffer[i]->sem_handle); 
 fprintf(stdout, "Write Lock i %d  %p \n ",i, nap->write_buffer[i]->sem_handle);  
 fprintf(stdout, "Read Buffer i %d  %p \n ",i, nap->read_buffer[i]->buffer); 
 fprintf(stdout, "Write Buffer i %d  %p \n ",i, nap->write_buffer[i]->buffer); 

}

其中 SharedStruct 是一个带有 char* 缓冲区成员和 int sem_handle 的结构

SharedStruct** create_buffer(int nb, int size) {
SharedStruct** result = malloc(nb * sizeof(SharedStruct*));
int i = 0 ;
for (i = 0 ; i<nb ; i++) {
        SharedStruct* res= malloc(nb *sizeof(SharedStruct));
        res->buffer = malloc(size * sizeof(char)); 
        int lock = initialise_protection();
        fprintf(stdout, "\n Semaphore initialised to %d \n ", lock);
        res->sem_handle = lock ;
    }
    return result ;
 }

最佳答案

我没有看到您初始化结果中包含的指针。您刚刚为它们分配了空间,似乎您忘记了在循环中执行 result[i]=res。

关于c - 指针/结构问题 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783892/

相关文章:

c - 用于控制系统服务的简单 C 或 C++ API

c - Balde - 设置问题

c++ - 为派生类 move 构造函数

c - 按名称排序结构(双向链表)

c++ - Derive from CObject for serialization results a compiler error for access

c++ - 具有类成员的结构的静态初始化

c - 为什么 minizip 不归档大文件(大于 4 GB)

c - 从 c 中的 uint32_t 值中提取 uint8_t 字节的可移植方法

c - 从结构修改字符串数组

计算大写字母和小写字母