Можно ли выделять память в отдельной функции?
От: Alick Россия http://www.livejournal.com/users/_alick_/
Дата: 07.05.03 14:53
Оценка:
Загвоздка заключается в том, что нельзя использовать средства C++. new/vector — не подойдут.
Пример:
#include <malloc.h>
struct S //Структура
{
      int i,j;
};
void func(S*);
int main()
{
    S* sss; //Заводим указатель на структуру, но на самом деле мы хотим получить динамический массив

    sss = (S *)calloc(10, sizeof( S ) ); //Выделили память под 10 элементов (на самом деле, 
                                         //это нужно, чтоб компилятор не ругался на использование 
                                         //переменной без присвоения ей значения)
    func(sss);
//... Если тут посмотреть на значение в ячейке sss[85].i, то оно, почему-то, не будет равно 20.

    return 0;
}
void func(S* sss)
{
    free(sss); //Очистили память
    sss = (S *)calloc(100, sizeof( S ) ); //Выделили память под 100 элементов
    sss[85].i=20; // Заносим в 85-ый элемент некое число.
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.