1

我想要一个包含k2 元素整数数组的数组。我的代码:

int **pipe_fd_ptr;
pipe_fd_ptr = malloc(k*sizeof(int*));
for(i = 0; i < k; i++)
{
    pipe_fd_ptr = malloc(2*sizeof(int));
}

// this is just for testing
for(i = 0; i<k; i++)
{
    for(j=0;j<2;j++)
        pipe_fd_ptr[i][j] =j;
}

我得到段错误。我究竟做错了什么?

4

2 回答 2

3

应该

for(i = 0; i < k; i++)
{
    pipe_fd_ptr[ i ] = malloc(2*sizeof(int));
}

为 k 指向 int 的指针分配空间,pipe_fd_ptr = malloc(k*sizeof(int*));然后遍历数组并为每个指针分配内存pipe_fd_ptr[ i ] = malloc(2*sizeof(int));

于 2013-04-18T13:50:37.853 回答
1
for(i = 0; i < k; i++)
{
    pipe_fd_ptr[i] = malloc(2*sizeof(int));
}
于 2013-04-18T13:50:27.780 回答