Вопросы по теме 'memory-layout'
Как выглядит карта памяти процесса Windows?
Это может быть повторяющийся вопрос. Я хочу знать, как выглядит карта памяти процесса Windows? Ищу подробности. Пожалуйста, предоставьте ссылки на блоги, статьи и другую соответствующую литературу.
10468 просмотров
schedule
24.10.2021
макет памяти процесса Windows
Итак, я играл с отладчиком Olly, обнюхивая все, что я еще могу узнать об окнах, и нажал кнопку M, и появилось окно карты памяти. Итак, я поискал в Google несколько статей на эту тему и обнаружил, что могу писать по адресам выше 64К, которые я...
1552 просмотров
schedule
05.10.2021
Что происходит с виртуальным базовым классом при многоуровневом наследовании?
Играя с наследованием, мне довелось попробовать следующее:
class A
{ int i; };
class B : virtual public A
{ int j; };
class C : public B
{ int k; };
int main()
{
std::cout<<sizeof(C)/sizeof(int);
return 0;
}
Что дало мне...
476 просмотров
schedule
03.12.2021
Где хранятся статические константы?
Если константа определена глобально, она переходит в сегмент text . Локальные константы помещаются в stack . Статические переменные сохраняются в сегменте data или bss в зависимости от того, инициализирован ли он на месте и чем он...
59 просмотров
schedule
13.09.2021
Макет объекта в случае виртуальных функций и множественного наследования
Недавно в интервью меня спросили о компоновке объекта с виртуальными функциями и задействованным множественным наследованием. Я объяснил это в контексте того, как это реализовано без задействования множественного наследования (т.е. как компилятор...
9728 просмотров
schedule
04.03.2022
ELF64/x86_64 и начальный адрес сегмента отображения памяти (для общих объектов)
Я написал несколько программ и обнаружил, что при компиляции в 64-битной версии сегмент отображения памяти (где, например, хранятся общие объекты и общая память) всегда находится где-то в районе 7f9aca84a000-7fff88400000, но никогда точно не...
2505 просмотров
schedule
22.04.2022
Несоответствие адреса 'this', когда базовый класс не полиморфен, но является производным
Вот такой код:
#include <iostream>
class Base
{
public:
Base() {
std::cout << "Base: " << this << std::endl;
}
int x;
int y;
int z;
};
class Derived : Base
{
public:
Derived() {...
1960 просмотров
schedule
28.10.2022
Как устроен счетчик ссылок shared_ptr?
Я довольно новичок в C++. Я думал, что shared_ptr хранит отдельный указатель на отдельную переменную счетчика ссылок. Но сегодня я вдруг понял, что на самом деле я не знаю, как это устроено, и ссылочное значение не обязательно должно иметь...
827 просмотров
schedule
12.09.2023
Почему я вижу несколько одинаковых сегментов в выводе /proc/pid/maps?
Тест на 32-битной Linux
Код выглядит следующим образом:
int foo(int a, int b)
{
int c = a + b;
return c;
}
int main()
{
int e = 0;
int d = foo(1, 2);
printf("%d\n", d);
scanf("%d", &e);
return 0;
}
и когда...
1043 просмотров
schedule
27.06.2023
Есть ли прагма, чтобы не заботиться о макете структуры/класса? Если нет, то почему?
Существуют различные pragma для управления макетом структуры/класса, например pragma pack . Но, насколько я знаю, нет pragma , чтобы сказать: «Меня не волнует макет. Он внутренний, код на него не полагается. Измените порядок для лучшей...
198 просмотров
schedule
01.10.2023
Dlang — есть ли способ встраивать объекты в объекты?
В соответствии со спецификацией D все классы доступны по ссылке, что означает, что следующий класс будет расположен в памяти следующим образом.
Псевдокод:
class A
{
public int c;
public B b;
}
Схема памяти объекта типа A:
4...
129 просмотров
schedule
21.12.2022
Массив несмежных объектов
#include <iostream>
#include <cstring>
// This struct is not guaranteed to occupy contiguous storage
// in the sense of the C++ Object model (§1.8.5):
struct separated {
int i;
separated(int a, int b){i=a; i2=b;}...
973 просмотров
schedule
11.06.2023
Почему разница между двумя указателями не равна размеру типа?
У меня есть простая программа:
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b = 6;
int* p1 = &a;
int* p2 = &b;
std::cout << p1 << " " << p2 << " ,sizeof(int)="...
130 просмотров
schedule
17.11.2022
Имеет ли значение порядок объявления свойств?
Согласно работе с MemoryLayout , следующие структуры Foo и Bar будут иметь одинаковые значения для stride и alignment :
struct Foo {
let myInt: Int
let myBool: Bool
}
struct Bar {
let myBool: Bool
let myInt: Int
}...
59 просмотров
schedule
21.01.2023
Копии переменных-членов с защитой от наследования в памяти
Мне сказали, что если я выполняю наследование, когда базовый класс содержит защищенные переменные-члены, а дочерний класс создаст базовый класс, он будет дублировать его члены в памяти. Пример:
class Animal
{
public:
virtual std::string&...
90 просмотров
schedule
13.07.2023
Проблемы с размещением памяти в C (64-разрядная версия)
Я хотел понять, как работает программа «C» и хранит данные в машине. Поэтому я просмотрел схему памяти C из здесь и последовал те же инструкции на моей 64-битной машине.
Во-первых, когда я написал программу (у main есть только return 0; ) и...
164 просмотров
schedule
29.03.2023
Максимальный размер стека многопоточного процесса
В моем понимании
каждый поток процесса получает стек, в то время как обычно для процесса существует только одна куча.
Существует предел максимального размера стека по умолчанию, установленный ОС.
Windows-64 bit : 1MB
Linux-64 бит: 8 МБ...
567 просмотров
schedule
02.08.2023
Потоки имеют одинаковое пространство виртуальной памяти, но разные стеки? Где стеки?
Стек времени выполнения программы хранится как часть виртуальной памяти и начинается с адреса X в системе Y (без учета рандомизации). Когда создается новый поток с собственным независимым стеком, где он сохраняется? (потоки совместно используют свою...
56 просмотров
schedule
11.04.2023