我有一个数据数组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]'会是什么? –