Opened 5 years ago

Closed 4 years ago

#497 closed ожидается проверка (задача сдана)

hw #1

Reported by: Шиповалов Артем Owned by: Vasily Alferov
Component: HW #1 (BMP) Version: 1.0
Keywords: Cc:

Description

Я написал только чтение и запись покачто

Change History (3)

comment:1 Changed 5 years ago by Vasily Alferov

Type: ожидается проверкаожидаются исправления

Убери Лену из репозитория? Локально можешь оставить.

Корректноcть

Не дописано настолько, что не компилируется, поэтому тут 0.

Стиль

Увы, тут тоже пока 0 =(

Основная претензия: когда кто-то будет пытаться читать твой код и, например, расширять его на поддержку большего количества bmp-файлов, ему придётся в самом базовом случае писать всё заново: код делает непонятно что и очень жёстко завязан на конкретный формат.
Я не прошу думать за поддержку, я прошу пожалеть мои глаза.
Чтобы тут было не 0, нужно:

  • Иметь структурку bmp или аналогичную и структурку dib_headers или аналогичную.
  • Все функциии должны работать с этой структурой.
  • Вся работа по выделению/освобождению памяти в кишках этой структуры должна вестись в bmp.c.

comment:2 Changed 4 years ago by Шиповалов Артем

Type: ожидаются исправленияожидается проверка

Я правда стараюсь, пытаюсь, но segmentation fault меня убивает

comment:3 Changed 4 years ago by Vasily Alferov

Resolution: задача сдана
Status: assignedclosed

Ну, тут уже есть что-то разумное, хотя очень сильно недодебаженное.

По умолчанию доделывать нельзя, дедлайн прошёл. Напиши мне, если у тебя всё же есть желание доделать.

  • Стиль: 7/10. Тут слишком недоделано, чтобы ставить 10, но что-то разумное есть.
  • Корректность: 6/20.

Ключ к твоим сегфолтам — неправильное выделение памяти под двумерный массив.
На всякий случай, мы обсуждали такой вариант:

rgb **image = malloc(sizeof(rgb*) * h);
rgb *tmp = malloc(sizeof(rgb) * h * w);
for (int i = 0; i < h; i++) {
    image[i] = tmp + i * w;
}

Тут мы сначала выделяем память под указатели на строки, потом под сам подряд идущий массив, а потом прокидываем указатели на строки туда, куда они должны вести.

У тебя какая-то вариация на эту тему, написанная явно без понимания происходящего.

Впрочем, даже если написать правильно, даже load и save не работают. Хотя в этих местах сегфолта уже нет.

Note: See TracTickets for help on using tickets.