Распределение и удаление памяти

Рейтинг: 1Ответов: 2Опубликовано: 07.07.2011

Дело обстоит так. Задал препод задание. В котором надо - распределить память под элементы массива и потом освободить память. Сделал задание.

typedef struct
{
    int Id;
    char FIO[NAME_SIZE];
    int Mark;
    char Teacher[NAME_SIZE];
}Student;

Student students[100];

Считаю, что последней строкой я распределяю память на 100 элементов. Но! Я начал читать про последовательности, нашёл какой-то:

Init – начальное распределение памяти под элементы последовательности;

И вот вопрос. Даже два. Надо ли мне делать распределение памяти через init(препод в отпуске, так что уже поздно метаться, тут если правильно через init делать, значит надо делать)? И второй - где прочитать про это. Слегка прогуглил операцию init, о неё кроме как в методичке моей - ничего нету. Помогите плз!

УТОЧНЕНИЕ описана функция Init:

int Init(SEQ* seq, int MaxSize)
{
    if (seq->pArr != NULL)
        return -1;
    seq->pArr = (int*) malloc(MaxSize*sizeof(int));
    if (seq->pArr == NULL)
        return -2;
    seq->nMaxSize = MaxSize;
    seq->nSize = 0;

    return MaxSize;
}

Ответы

▲ 1Принят

Операции init в C/C++ нет. Равно как и функции такой. Возможно подразумевалось, что в случае написания собственных классов нужно отдельно конструировать объект, а отдельно вызывать ф-цию задающую его начальное состояние. Но тогда она может иметь любое разумное имя, лишь бы была четкая документация как этот класс использовать, но я считаю это неудачным решением, т.к. обычно в конструкторе можно сразу сделать объект полноценным и готовым к эксплуатации.

Если речь идет в задании про распределение и удаление памяти, то следует обратить внимание на работу с динамической памятью (heap или куча). В C для этого используется пара ф-ций malloc/free, в C++ лучше использовать операторы new и delete. И тогда получается, что в методичке хотят, чтобы Вы просто разбили свою программу на ф-ции, одна из которых будет создавать Ваш массив, а другая - удалять. Ну, это помимо самой работы =)

▲ 1

Могу предположить что вам нужно реализовать список(опираясь на личный опыт студента). Если это так, то вам сюда