我想在 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;
}