C Segmentation Fault没有任何理由

时间:2016-09-08 17:35:46

标签: arrays struct segmentation-fault

有人可以告诉我为什么我在这里有分段错误吗?

<section class="section-one">One</section>
<section class="section-two">Two</section>
<nav>Nav</nav>
<section class="section-three">Three</section>
<section class="section-four">Four</section>

我尝试使用调试器,但它只是说问题在元素函数内部。

1 个答案:

答案 0 :(得分:0)

您的帖子需要更多细节。崩溃的线,Mat的定义,意图是什么。等。

将来看看如何制作Minimal示例。使用'C'标签也可以获得更快的响应。一定要发布一个详细的问题,否则你将被投票和谴责。

代码存在多个问题。问题似乎在块大小变量周围。

int i_start=k*block_size;
int i_end=(k+1)*block_size-1;
int j_start=l*block_size;
int j_end=(l+1)*block_size-1;

传入特定的i,j组合并乘以块大小将超过row_ptrs数组的末尾。读取/写入数组的末尾是未定义的,通常会导致崩溃。也许你的意思是划分?

这个位也很奇怪。

for(i=0;i<m->rows;i++){
    for(j=0;j<m->cols;j++){
       new->row_ptrs[i][j]=elements(m->row_ptrs,i,j,block_size);
    }
}

行的最大索引是[m-> rows / block_size] [m-> cols / block_size],但是你将一直到[m-rows] [m-> cols]。除非blocksize为1,否则当它写入数组末尾时会崩溃。