ПК
А это ведь поправили в C++20, так?
Size: a a a
ПК
VS
VS
AT
ПК
S
cl /TC ..
будет компилить код по правилам Cvoid*
в любые указателиПК
ПК
cl /TC ..
будет компилить код по правилам Cvoid*
в любые указателиПК
VS
VS
m
VS
ПК
m
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);
VS
S
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);
calloc
2 аргумента и sizeof(int) может быть < sizeof(S*)VS