Присвоение данных массиву с помощью фигурных скобок

Почему следующее выражение в языке C не работает?

map = malloc(sizeof(Map) * tiles);
map = {
    0,2,0,0,0,0,0,0,2,0,
    0,1,0,0,0,0,0,0,1,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,
    2,1,0,0,0,0,0,0,1,2,
    0,0,0,0,0,0,0,0,0,0
};

Я просто хочу заполнить данные в таком формате «строка / столбец» в массиве C. Однако компилятор не работает с

error: expected expression before ‘{’ token

(в строке map = {). Заполнение массива другими способами работает нормально, и я уверен, что скобки подходят для инициализаций ... Я не могу этого сделать после того, как выделил память?

РЕДАКТИРОВАТЬ: Я решил это, создав временный массив символов и затем загрузив данные в преобразованную карту в цикле for. По-прежнему. Я хотел бы знать, почему в приведенном выше коде происходит утечка памяти, как указано ниже. И не будет ли мое исправление (анализ временного массива и установка с ним данных карты) утечки памяти?

6
задан roger_rales 24 July 2011 в 11:08
поделиться