c - 如何在 C 中的给定地址动态分配内存?

标签 c malloc dynamic-memory-allocation

<分区>

我想在 c 中的给定地址处动态分配内存。我正在使用指向指针的指针创建一个二维数组。我编写的代码如下:

int **a;
a = (int**)malloc(sizeof(int*)*r);
for(int i = 0;i < r;i++)
{
     if(i < r - 1 && i != 1)
     {
         a[i] = (int*)realloc(a[i],sizeof(int)*c);
         a[i + 1] = &a[i][c - 1] + 1;
     }
}

我知道我想分配它的地址,但我不能使用 malloc(),因为它在其他地址分配内存。我尝试使用 realloc(),但它显​​示运行时错误无效指针。我应该使用什么?

最佳答案

<stdlib.h>下定义了4个库函数在C编程中进行动态内存分配。他们是 malloc() , calloc() , realloc()free() .

示例:malloc() 和 free()

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, i, *ptr, sum = 0;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    ptr = (int*) malloc(n * sizeof(int));
    if(ptr == NULL)                     
    {
        printf("Error! memory not allocated.");
        exit(0);
    }

    printf("Enter elements: ");
    for(i = 0; i < n; ++i)
    {
        scanf("%d", ptr + i);
        sum += *(ptr + i);
    }

    printf("Sum = %d", sum);
    free(ptr);
    return 0;
}

关于c - 如何在 C 中的给定地址动态分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386134/

相关文章:

c - 对字符串常量和字符串变量感到困惑

c - 无法释放父结构的 child

C: MSVC2008 Malloc 和崩溃程序

C 管理函数临时动态内存的有效方法

c - 为什么在尝试释放字符串数组时出现此错误

c - 如何在C中设置getchar的最大等待时间

c# - WM_SIZING 上的 GetClientRect 给出了错误的大小

c - 分配了一些内存后,我无法计算出我分配的内存的正确大小。我不知道为什么

C - 矩阵乘法分割错误

c - OpenMP 性能不佳