malloc属不属于java关键字_在C中使用malloc分配动态内存

我'm new to C and have been trying to tackle this question. It'是the last thread I made的延续 . 我取得了一些进展,但仍然需要学习和修复 .

简而言之:

在这个问题中,“向量”是整数的一维数组 . 因此,矢量数组将是一个二维数组,其中包含一维数组 .

我需要使用这些变量:

int ** vectors - 2D数组

int size -an整数,表示**向量中存在多少向量

int * sizes - 一个1D的整数数组,表示向量的长度

我需要编写以下函数:

**int init(int vectors, int sizes, int size)

函数将内存分配给向量和大小和大小,并初始化向量以充满NULL,并将大小填充为零 .

**int set(int *vectors, int sizes, int index, int tmp, int tmp_size)

函数接收一个空数组(向量)),释放其索引为索引的向量内的向量,并为新向量分配内存,其长度为tmp_size并放置在其中 tmp的元素 .

这是我的代码:

#define _CRT_SECURE_NO_WARNINGS

#include

#include

int init(int*** vectors, int** sizes, int size)

{

int i, k,j;

*sizes = (int*)malloc(size * sizeof(int));

if (*sizes == NULL)

return 0;

for (j = 0; j < size; j++)

{

(*sizes)[j] = 0;

}

*vectors = (int**)malloc(size * sizeof(int*));

if (*vectors == NULL)

return 0;

for (i = 0; i < size; i++)

{

(vectors)[i] = NULL;

}

return 1;

}

int set(int **vectors, int *sizes, int index, int *tmp, int tmp_size)

{

if ((vectors)[index] != NULL)

{

free((vectors)[index]);

}

(vectors)[index] = (int*)malloc(tmp_size * sizeof(int));

if ((vectors)[index] == NULL)

return 0;

for (int b = 0; b < tmp_size; b++)

{

(vectors)[index][b] = tmp[b];

}

sizes[index] = tmp_size;

return 1;

}

int main()

{

int size, i, length, indexhere;

int** vectors = NULL;

int* sizes = NULL;

int* tmp = NULL;

int* p = &vectors;

int tempindex;

printf("\nPlease enter an amount of vectors:\n");

scanf("%d", &size);

init(p, &sizes, size);

printf("Enter index\n");

scanf("%d", &indexhere);

printf("Enter Length\n");

scanf("%d", &length);

tmp = (int*)malloc(length * sizeof(int));

printf("Enter elements:\n");

for (int g = 0; g < length; g++)

scanf("%d", &tmp[g]);

set(&vectors, sizes, indexhere, tmp, length);

system("pause");

return 0;

}

有人可以解释为什么程序总是崩溃?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值