gpt4 book ai didi

c - C中的动态数组调整大小

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:28 26 4
gpt4 key购买 nike

我遇到了动态数组的问题。我必须编写一个程序,向动态数组添加一个字符,从 0 个元素开始到 10 个元素。我不能使用 realloc,而且我每次都必须释放数组。

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

void add(int **ptab, int n, int new_elem)
{

int *tab2, y;

tab2 = malloc(n * sizeof(int));

for(y = 0; y < n; y++)
{
tab2[y] = (*ptab)[y];
}
*ptab = tab2;
(*ptab)[n] = new_elem;
free(ptab);
}

main()
{
int *ptab, i, x;

*ptab = NULL;
for(i = 0; i < 10; i++)
{
scanf("%d", &x);
add(&ptab, i, x);
}
for(i = 0; i < 10; i++)
{
printf("%d", ptab[i]);
}
}

最佳答案

*ptab=tab2;   
(*ptab)[n]=new_elem;
free(ptab);

应该是

free(*ptab);
*ptab=tab2;
(*ptab)[n]=new_elem;

目前,您在释放旧数组指针之前覆盖它,因此您不再知道应该释放什么。

关于c - C中的动态数组调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com