Opened 3 years ago

Closed 3 years ago

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

WW_exceptions [prudnikov.mark]

Reported by: Марк Прудников Owned by: Дмитрий Лапшин (lapshin)
Component: WW_exceptions Version:
Keywords: Cc:

Description

Не уверен, что правильно работаю с bad_alloc.

Change History (3)

comment:1 Changed 3 years ago by Дмитрий Лапшин (lapshin)

Owner: changed from Дмитрий Лапшин (lapshin) to Марк Прудников
Type: ожидается проверкаожидаются исправления

А load вообще работает хоть иногда?.. Нет, потому что in.failbit это std::ios_base::failbit это константа.

Ну пробелы.

Зачем ты заранее объявляешь переменные, которые используются лишь локально?

Да, с bad_alloc ты что-то странное делаешь. Во-первых, что-то печатаешь на экран, это странно. Во-вторых ты исключение замалчиваешь. Правильнее было бы:

int **p = new int*[???];
try {
   fill it with rows
} catch (std::bad_alloc &e) {
   unfill it (if makes sense)
   delete[] p;
   throw;
}

и обрабатывать там где можно обработать (видимо в main или около него).

Вообще у тебя сейчас в случае ошибки утечки памяти. И вообще можно чище и проще. Пока 2.

comment:2 Changed 3 years ago by Марк Прудников

Owner: changed from Марк Прудников to Дмитрий Лапшин (lapshin)
Type: ожидаются исправленияожидается проверка

comment:3 Changed 3 years ago by Дмитрий Лапшин (lapshin)

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

Что-то всё ещё грустновато.

    data = new int32_t * [cols];

Да?.. Кажется там было rows.

    for (uint32_t i = 1; i < rows; i++)
        data[i] = data[0] + i * cols * sizeof(int32_t);

Арифметика указателей не так работает, у тебя уже uint32_t *, умножать на размер не надо..

Дальше delete data[0]; где data[0] массив и надо было delete[].

Дальше, внезапно, начинает работать! Утечки памяти, конечно. Формат вывода: лишние пробелы. А дальше по мелочам.

4.

Note: See TracTickets for help on using tickets.