Вопросы по теме 'memory-layout'

Почему виртуальное ключевое слово увеличивает размер производного класса?
У меня есть два класса - один базовый класс и один производный от него: class base { int i ; public : virtual ~ base () { } }; class derived : virtual public base { int j ; }; main() { cout << sizeof ( derived ) ; } Здесь...
3353 просмотров

Черта типа для идентификации основного базового класса
Если у меня есть класс Base, по крайней мере, с одной виртуальной функцией и класс Derived, который наследуется отдельно от него, то (uintptr_t)derived - (uintptr_t)static_cast<Base*>(derived) гарантированно (с помощью Itanium ABI) будет равен...
2352 просмотров

Использование отражения для определения расположения типа .Net в памяти.
Я экспериментирую с оптимизацией комбинаторов парсеров на С#. Одна из возможных оптимизаций, когда сериализованный формат соответствует формату в памяти, состоит в том, чтобы просто выполнить (небезопасный) memcpy данных, которые должны быть...
1550 просмотров

Обеспечивает ли Linux гарантированную недоступную область памяти ниже нижнего конца стека?
Предоставляет ли Linux недоступную область памяти под нижним концом стека, которая имеет гарантированный минимальный размер? И если такой гарантированный минимальный размер существует, то какой? Или, другими словами, когда я должен начать...
176 просмотров
schedule 05.02.2023

Numpy: транспонировать результат расширенного индексирования
>>> import numpy as np >>> X = np.arange(27).reshape(3, 3, 3) >>> x = [0, 1] >>> X[x, x, :] array([[ 0, 1, 2], [12, 13, 14]]) Мне нужно суммировать его по измерению 0 , но в реальном мире матрица...
937 просмотров
schedule 13.03.2023

Самая дешевая структура для деференции?
Скажем, у меня есть ассоциативный массив с ключом unsigned int ; значения могут быть любого типа фиксированного размера. Существует некоторый предопределенный максимальный номер. экземпляров. Пример использования API: MyStruct * valuePtr =...
61 просмотров

Преобразование DirectX11 ID3D11Texture2D из Shader в OpenCV IplImage
Краткое введение . Я написал приложение дополненной реальности с Oculus Rift на C++ (DirectX). Один из моих фрагментных шейдеров вычисляет неискажение для модели всенаправленной камеры. Единственная проблема, с которой я столкнулся сейчас, - это...
1279 просмотров

Получить размер (в байтах) объекта в куче
Я знаю, что вы можете использовать MemoryLayout<T>.size для получения размера типа T . Например: MemoryLayout<Int32>.size // 4 Однако для экземпляров класса (объектов) MemoryLayout<T>.size возвращает размер ссылки на...
8270 просмотров

Почему адрес локальной переменной постоянно меняется при каждом выполнении одного и того же двоичного образа?
У меня есть небольшой фрагмент кода, как показано ниже: char global=100; void main() { char p = NULL; printf("%p\n", &p); printf("%p\n", &global); } Однажды после компиляции и создания...
219 просмотров
schedule 17.08.2022

Постоянные данные в стеке?
Я собирался ответить на чей-то вопрос о том, что printf принимает char *, поэтому я создал небольшую тестовую программу и задал свой вопрос. скомпилировано на codechef.com/ide с GCC 6.3 Передайте char* непосредственно в printf Я думаю, что...
57 просмотров
schedule 02.04.2023

Как битовые поля взаимодействуют с битовым заполнением в C ++
См. C-версию этого вопроса здесь . У меня есть два вопроса относительно битовых полей, когда есть биты заполнения. Скажем, у меня есть структура, определенная как struct T { unsigned int x: 1; unsigned int y: 1; }; В...
281 просмотров

Что на самом деле делает bindMemory(to:capacity:)?
Документация Apple по методу bindMemory(to:capacity:) на UnsafeRawPointer гласит: Используйте метод bindMemory(to:capacity:) для привязки памяти, на которую ссылается этот указатель, к типу T. Что означает привязка памяти к типу?...
146 просмотров
schedule 18.07.2023

Проблема размера объекта наследования виртуального класса
Здесь, в этом коде, размер ob1 равен 16, что нормально (из-за виртуального указателя), но я не могу понять, почему размер ob2 равен 24. #include <iostream> using namespace std; class A { int x; }; class B { int y, z; }; class C :...
189 просмотров

Понимание размера виртуального производного класса
#include <iostream> using namespace std; class A { int a; }; class B1 : virtual public A { int b1; }; class B2 : virtual public A { int b2; }; class C : public B1, public B2 { int c; }; int main() { A obj1; B1 obj2; B2 obj3; C obj4;...
141 просмотров