Size: a a a

2021 March 03

BH

Blue Heart in supapro.cxx
Кхм, поправьте меня, если ошибаюсь, но в примере выше ведь не обязательно память выделится последовательно. Там ведь гораздо больше сайзофа может быть разница, нет?
источник

S

Stepan in supapro.cxx
3 дубликата, чтоб наверняка?
источник

NM

Nastya Medveda in supapro.cxx
Blue Heart
Кхм, поправьте меня, если ошибаюсь, но в примере выше ведь не обязательно память выделится последовательно. Там ведь гораздо больше сайзофа может быть разница, нет?
Конечно нет, но как правило да.
источник

BH

Blue Heart in supapro.cxx
Nastya Medveda
Конечно нет, но как правило да.
Компилятор и ос?
источник

NK

Nikolay Kononov in supapro.cxx
Blue Heart
Кхм, поправьте меня, если ошибаюсь, но в примере выше ведь не обязательно память выделится последовательно. Там ведь гораздо больше сайзофа может быть разница, нет?
ну это компайл депендент штука, но по идее локальные переменые кладутся последовательно на стек
источник

NM

Nastya Medveda in supapro.cxx
Blue Heart
Компилятор и ос?
macOS + clang
источник

BH

Blue Heart in supapro.cxx
Nastya Medveda
macOS + clang
Спасибо
источник

D

Danya in supapro.cxx
Так что-то мешает заменить goto на функции?
источник

NK

Nikolay Kononov in supapro.cxx
да
источник

NK

Nikolay Kononov in supapro.cxx
если попадет на первую метку он должен пройти по всему списку
источник

NK

Nikolay Kononov in supapro.cxx
а ты что хочешь каждый раз его дублировать ?)
источник

NK

Nikolay Kononov in supapro.cxx
для каждого goto вызывать свой список из 1-6 функций
источник

IZ

Ilia Zviagin in supapro.cxx
Nastya Medveda
Добрый вечер, скажите, а где в памяти компьютера хранится значение типа переменной?  

Адрес в памяти понятно, значение переменной тоже понятно.  Но где хранится информация о типе?
Если создать две переменные они будут друг от друга ровно на sizeof их типа, то есть информацию об их типе туда не впихнуть:

#include <iostream>

int main() {
   int a = 1;
   int b = 2;

   std::cout << &a << std::endl;
   std::cout << &b << std::endl;
   std::cout <<"space between int vars:" <<  reinterpret_cast<long int>(&a) - reinterpret_cast<long int>(&b) << std::endl; //4
   std::cout << "sizeof(int) " << sizeof(int) << std::endl; //4
}
Если создать так переменные , они могут размещаться по любым адресам, не смежным.
источник

AS

Anatoly Shirokov in supapro.cxx
Ilia Zviagin
Если создать так переменные , они могут размещаться по любым адресам, не смежным.
Большая вероятность, что они будут смежными
источник

K

Kirill in supapro.cxx
В плюсах есть возможность получить ID типа через std::type_info::hash_code
А существует ли способ сделать обратное?
источник

AS

Anatoly Shirokov in supapro.cxx
Но это никто нигде не специфировал
источник

D

Danya in supapro.cxx
Nikolay Kononov
если попадет на первую метку он должен пройти по всему списку
Я вообще не понял о чём ты
источник

SK

Stas Koynov in supapro.cxx
Danya
Так что-то мешает заменить goto на функции?
ну в функциях получаются дубликаты:

упростим пример до:
buf1= kmalloc(123);
if(!buf1) goto bad_buf1;

buf2 = kmalloc(123);
if(!buf2) goto bad_buf2;

...
if(!bufn) goto bad_bufn;

//в конце раздел очистки:
в противоположную сторону
bad_bufn:
 очиста n;
...
bad_buf1:
 очиста 1;
источник

IZ

Ilia Zviagin in supapro.cxx
Kirill
В плюсах есть возможность получить ID типа через std::type_info::hash_code
А существует ли способ сделать обратное?
А что обратное?
источник

K

Kirill in supapro.cxx
Ilia Zviagin
А что обратное?
По хеш-коду получить тип
источник