簡體   English   中英

重新分配不執行

[英]Realloc no execute

首先,變量的名稱很希臘。 因為有很多文件,所以看不到所有代碼。 但是有一個結構

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;

有了這個功能,我主要創建一個數組

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增加的新大小。 我創建一個本地數組並復制到該主數組,我想重新分配主數組,然后再次將該本地數組復制到新的主數組。 不會出現編譯錯誤,但是在執行(也在調試時)時,程序會在重新分配時中斷。

重新分配時,您忘記將尺寸乘以單位大小。 正確的行應為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM