我想要一个 k
2 元素整数数组。我的代码:
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;
}
我遇到了段错误。我做错了什么?
最佳答案
应该是
for(i = 0; i < k; i++)
{
pipe_fd_ptr[ i ] = malloc(2*sizeof(int));
}
使用 pipe_fd_ptr = malloc(k*sizeof(int*));
你为 k 个指向 int 的指针分配了空间
然后遍历数组并使用 pipe_fd_ptr[ i ] = malloc(2*sizeof(int));
关于c - 指针和多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084809/