Вы не выделили достаточно места для samples
:
samples = malloc(nsamples);
Функция malloc
выделяет пространство для указанного количества байтов , а не количества элементов массива,Таким образом, ваш массив намного короче, чем вы думаете.Это означает, что вы в конечном итоге будете писать после конца массива, вызывая неопределенное поведение .
Вам нужно умножить количество элементов на размер элемента, чтобы выделить правильное количество места:
samples = malloc(nsamples * sizeof(*samples));
При доступе к массиву также возникает ошибка, равная единице:
int c = 0;
...
while(c<nsamples){
c++;
...
samples[c] = time;
...
}
Это также записывает после конца массива, в частности, один элемент массива слишком много,
Измените цикл, чтобы он начинался со значения 1 и увеличивался в конце.
int c = 0;
...
c = 1;
while(c<nsamples){
...
samples[c] = time;
...
c++;
}