gpt4 book ai didi

c - 重新分配不执行

转载 作者:行者123 更新时间:2023-11-30 15:22:15 25 4
gpt4 key购买 nike

首先,变量的名称是希腊语。不可能看到所有代码,因为文件很多。然而 a 有一个结构

typedef struct{
TTamias* Tamies;
}TPinakasTamiwn;

TTamias 是类型

typedef struct{
int time_busy; /*xronos apasxolhshs tou tamia*/
int time_inactive; /*xronos pou o tamias einai adranhs*/
int arithos_pelaton; /*posous pelates eksipiretise o tamias*/
int enapomenon_xronos; /*enapomenon xronos eksipiretisi enos pelath*/
}TTamias;

通过 main 中的这个函数,我创建了一个数组

void DimourgiaTamiwn(TPinakasTamiwn* tamias)
{
tamias->Tamies = (TTamias*)malloc(sizeof(TTamias) * TAMIES);
}

经过一些比较,我想用这个函数增加数组的大小

int ProsthikiTamia(TPinakasTamiwn* tamias,int plithos_tamiwn)
{
TTamias* NeoiTamies;
int neo_plithos = plithos_tamiwn + 1;
NeoiTamies = (TTamias*)malloc(sizeof(TTamias) * neo_plithos);
for(int i = 0; i < plithos_tamiwn; i++)
NeoiTamies[i] = tamias->Tamies[i];

for(int i = neo_plithos - plithos_tamiwn; i < neo_plithos; i++)
TamiasDimiourgia(&NeoiTamies[i]);//fuction to initialize the data member of extra index

tamias->Tamies = (TTamias*)realloc(tamias->Tamies , neo_plithos);// <-----PROBLEM

for(int i = 0; i < neo_plithos; i++)
tamias->Tamies[i] = NeoiTamies[i];
free(NeoiTamies);
return neo_plithos;
}

该函数返回大于 1 的新大小。我创建一个本地数组并将主数组复制到其中,我想重新分配主数组并再次将本地数组复制到新的主数组。没有出现编译错误,但在执行时(也在调试时)程序在realloc处中断。

最佳答案

重新分配时,您忘记将维度乘以单位大小。正确的行应该是:

tamias->Tamies = (TTamias*)realloc(tamias->Tamies , sizeof(TTamias) * neo_plithos);

关于c - 重新分配不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29254313/

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