c - 指针和多维数组

标签 c pointers memory-management

我想要一个 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/

相关文章:

c - 我已经安装了 SDL,但它似乎仍然无法正常工作

c - 为什么 {typedef int* PTR;const PTR p=#} 不等于 "const int* p=&num"而等于 "int *const p=&num"?

C指针数组/指针数组消歧

c++ - 创建用户定义类的实例并打开文件后出现 memset 问题

java - 元空间是从 native 内存中分配的吗?

c - 为什么此代码在编写异常时会引发访问冲突?

c - 努力编译一个简单的c程序(gcc)

c++ - 空派生优化

c++ - 知道在执行期间访问了哪些内存页面

c - 如何让我的编译器在 Codelite 中工作? (它适用于代码块)