Выделение памяти под одномерный динамический массив

Модератор: Модераторы разделов

GenchiK
Сообщения: 27

Выделение памяти под одномерный динамический массив

Сообщение GenchiK »

Здравствуйте! Ребята пытаюсь разобраться с malloc, программирую, точнее учусь на чистом Си.Написал следующий код, и хочу спросить правильно ли я выделил память?

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int *memA, *fp, i, n;

    printf("Enter size of array: ");
    scanf("%d", &n);

    memA = (int*)malloc(n*sizeof(int));
    if( !memA ) printf("\nMemory error!");

    fp = fopen("test.txt", "a");

    if( !fp ) {
        printf("\nError.");
        exit();
    }

    for( i=0; i<n; i++ ) {
        memA[i] = i*i;
        printf("memA[%d]> %d\n", i, memA[i]);

        if( !fprintf(fp, "A[%d]>%d\n", i, memA[i]) ) {
            printf("\nEror: error writing.");
        };
    }

    fclose(fp);
    free(memA);

    return 0;
}
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Выделение памяти под одномерный динамический массив

Сообщение drBatty »

да вроде норм...

только fprintf() выдаёт меньше нуля при ошибке.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
GenchiK
Сообщения: 27

Re: Выделение памяти под одномерный динамический массив

Сообщение GenchiK »

drBatty писал(а):
25.12.2010 18:02
да вроде норм...

только fprintf() выдаёт меньше нуля при ошибке.


А как вывести на экран размер выделенной памяти?
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Выделение памяти под одномерный динамический массив

Сообщение eddy »

GenchiK писал(а):
25.12.2010 18:03
А как вывести на экран размер выделенной памяти?

printf("%d\n", n);
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
GenchiK
Сообщения: 27

Re: Выделение памяти под одномерный динамический массив

Сообщение GenchiK »

eddy писал(а):
25.12.2010 18:05
GenchiK писал(а):
25.12.2010 18:03
А как вывести на экран размер выделенной памяти?

printf("%d\n", n);


По-моему не так... оно просто возьмёт значение которое я ввёл в n.Или я чего-то не понимаю?

Может правильнее вот так?

Код: Выделить всё

printf("%d\n", n*sizeof(int))


Ясно... не буду надоедать, всем спасибо за помощь!)
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Выделение памяти под одномерный динамический массив

Сообщение eddy »

GenchiK писал(а):
25.12.2010 18:08
Может правильнее вот так?

Точно.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали: