[英]Why this realloc inside a function fails to execute with Intel compiler?
[英]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.