我有一個數據數組arr
和一個索引數組index
。我的目標是使用for循環來創建在每個索引處分區的新數據數組,並進一步在每個分區數組中找到最小值。我使用malloc
創建一個動態數組,然後在每個循環結束時釋放它。使用malloc()刪除for循環中的數組的問題
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int j;
int arr[] = {1,3,4,6,7,8,12,87,89,12,34,43,54,67,81,2,0,10,23,45,81,23,89,23,56,81,28,79};
int index[] = {1,5,9,13,19,24};
int h = 27;
int k;
int c;
for(j = 0;j < h - 1;++j)
{
int *temp_arr = malloc(10*sizeof(int));
for(k = index[j];k<(index[j+1]);++k)
{
temp_arr[k] = arr[k];
}
int local_min ;
local_min = temp_arr[0];
for (c = 1 ; c < sizeof(temp_arr)/sizeof(temp_arr[0]) ; c++)
{ printf("Temp array %d ", temp_arr[c]);
if (temp_arr[c] < local_min)
{
local_min = temp_arr[c];
printf("Local min in loop %d ", local_min);
}
}
free(temp_arr);
printf("\n");
}
return 0;
}
不幸的是,程序崩潰時沒有給我任何錯誤信息。我認爲我可能使用malloc
做了一些根本性的錯誤。任何建議如何正確地做到這一點將不勝感激。
你正在分配'10'' int's。這個神奇的數字是什麼?顯然你的指數超過了'10'。 –
我在這裏的想法是,我的每個臨時數組將包含少於10個整數? – Sjoseph
當k = index [j]'和'j'爲'5'時,'temp_arr [k]'會是什麼? –