В моей программе calloc()
не работает размером более 38, но с меньшим, чем этот номер, он отлично работает. В этом случае я хочу выделить 128 из int
и выпустить его впоследствии.calloc не работает для больших чисел
Что случилось?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int *a;
int *x;
x = malloc(512/sizeof(int));
a = x;
int n = (512/sizeof(int));
int i;
for (i = 0; i < n; i++)
{
printf("Address of x[%d] = %x\n", i, x);
printf("Value of x[%d] = %d\n", i, *x);
x++;
}
free(a);
int *y = (int *)malloc(512/sizeof(int));
a = y;
for (i = 0; i < n; i++)
{
printf("Address of y[%d] = %x\n", i, y);
printf("Value of y[%d] = %d\n", i, *y);
y++;
*y = i + 1;
}
free(a);
int *z = (int *)calloc(38, sizeof(int));
a = z;
for (i = 0; i < 38; i++)
{
printf("Address of z[%d] = %x\n", i, z);
printf("Value of z[%d] = %d\n", i, *z);
z++;
}
free(a);
return 0;
}
'printf (" Значение y [% d] =% d \ n ", i, * y);' '* y' неинициализировано. –
if 'n = 512/sizeof (int)' then 'malloc (512/sizeof (int))' неверно, он должен быть 'malloc (512)'. –
Опишите эту ошибку. Также рассмотрите возможность удаления нерелевантного кода из вашего примера. Моя ставка заключается в том, что при этом проблема уже исчезнет. – 5gon12eder