m
Size: a a a
AT
VS
A
struct S {Такой код был UB. В 20ом стандарте UB нет, но срабатывание assert'а зависит от битового представления nullptr.
void* p;
};
S* s = reinterpret_cast<S*>(calloc(sizeof(int))); // note this memory guaranteed to be filled with zeros
assert(s->p == nullptr);
ПК
struct S {Такой код был UB. В 20ом стандарте UB нет, но срабатывание assert'а зависит от битового представления nullptr.
void* p;
};
S* s = reinterpret_cast<S*>(calloc(sizeof(int))); // note this memory guaranteed to be filled with zeros
assert(s->p == nullptr);
ПК
AT
S
VS
VS
ПК
VS
A
AT
VS
VS
m
static_assert((uintptr_t)nullptr == 0);
и тогда можно инициализировать указатели битовым нулем. То есть мне кажется, перевели из UB в implementation defined.