Opened 4 years ago

Closed 4 years ago

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

WW #13 Golovin Valery

Reported by: golovin.valeriy Owned by: Дмитрий Свиридкин
Component: WW_array Version: 3.0
Keywords: Cc:

Description


Change History (6)

comment:1 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to golovin.valeriy
Type: ожидается проверкаожидаются исправления
g++ bin/smoke_compile.o bin/main.o -o lab_13 
/usr/bin/ld: bin/main.o: in function `main':
main.cpp:(.text.startup+0x0): multiple definition of `main'; bin/smoke_compile.o:smoke_compile.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status

lab_13: src/main.cpp:22: void test_sizeof() [with T = int]: Assertion sizeof(my_array<T, 1>) == sizeof(T)' failed.
`
lab_13: src/main.cpp:28: void test_sizeof() [with T = bool]: Assertion sizeof(my_array<bool, 1>) == 1' failed.
`

магическая константа 8.

fill для bool лучше реализовать через memset

comment:2 Changed 4 years ago by golovin.valeriy

Owner: changed from golovin.valeriy to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to golovin.valeriy
Type: ожидается проверкаожидаются исправления

fill приводит к UB для N кратных 8.

comment:4 Changed 4 years ago by golovin.valeriy

Owner: changed from golovin.valeriy to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:5 Changed 4 years ago by Дмитрий Свиридкин

 uint8_t data_[(N + size_of_byte - 1)/ size_of_byte] = {};
 ....

 if (val)
        memset(&data_, ~0, (N+size_of_byte) / size_of_byte);
    else
        memset(&data_, 0, (N+size_of_byte) / size_of_byte);
при N = 8:                         |
размер массива -- 1                | => у вас UB.
размер переданный в memcpy -- 2    |

8

Last edited 4 years ago by Дмитрий Свиридкин (previous) (diff)

comment:6 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.