Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
为什么 sizeof(Derived4) 是 8 字节?我认为应该是5个字节
这是给定程序的输出 sizeof Empty 1 sizeof Derived1 1 sizeof Derived2 4 sizeof Derived3 1 sizeof Derived4 8 sizeof Dummy 1 这是程序 inc
c
sizeof
virtualinheritance
memorylayout
emptyclass
为什么C的数据段被分成两部分?
所有全局初始化值都存储在 data段 即已初始化的数据段和未初始化的值存储在bss编译器将这些未初始化的值自动初始化为零bss Then why data段被分隔为 data and bss 是否有优势 或者有什么好处 C 编程语言 它是用
c
memorylayout
datasegment
具有相同成员类型的 C 结构是否保证在内存中具有相同的布局?
本质上 如果我有 typedef struct int x int y A typedef struct int h int k B 我有A a C 标准是否保证 B a gt k是相同的a y 具有相同成员类型的 C 结构是否保证在内存中
c
struct
casting
memorylayout
SEGMENT_START("text-segment", 0x400000) 代表什么?
我正在学习可执行二进制文件的布局 我的最终目标是分析特定可执行文件中可以重构 在其源代码中 以减少编译输出大小的内容 我一直在使用https www embeddedlated com showarticle 900 php https w
Linker
binaryfiles
ld
binutils
memorylayout
C 中指针比较如何工作?可以比较不指向同一数组的指针吗?
在 K R C 编程语言第二版 第 5 章中 我读到了以下内容 首先 在某些情况下可以比较指针 如果p and q指向同一个数组的成员 那么关系如下 lt gt 等工作正常 这似乎意味着只能比较指向同一数组的指针 但是当我尝试这段代码时 c
c
pointers
heapmemory
undefinedbehavior
memorylayout
将结构体转换为数组是否合法?
考虑以下 Just a sequence of adjacent fields of same the type repr C derive Debug struct S
Rust
slice
unsafe
memorylayout
objectmodel
linux 是否提供了保证在堆栈低端以下的不可访问的内存区域?
Linux 是否在堆栈下端以下提供了一个具有保证最小大小的不可访问的内存区域 如果存在这样的保证最小尺寸 它是什么呢 或者换句话说 我什么时候应该开始担心alloca 或者给我指向有效的非堆栈内存的指针 As the alloca 手册页
c
Linux
memorymanagement
memorylayout
Windows 进程的内存映射是什么样的?
这可能是一个重复的问题 我想知道windows进程的内存映射是什么样的 我正在寻找细节 请提供博客 文章和其他相关文献的链接 我总是喜欢能够真正看到事物 而不仅仅是阅读理论 事实证明 根据这篇博文 http www nynaeve net
Windows
memorymanagement
lowlevel
memorylayout
联合内位域的对齐
我对以下代码如何在内存中布局感到有点困惑 struct Thing union unsigned value 24 uint8 t bytes 3 Thing int v value v void foo printf Thing p va
c
gcc
unions
bitfields
memorylayout
为什么虚拟继承即使不涉及虚函数也需要一个vtable?
我读过这个问题 C 虚拟类继承对象大小问题 https stackoverflow com questions 57481249 c virtual class inheritance object size issue 并且想知道为什么虚
c
vtable
virtualinheritance
memorylayout
vptr
Rust 中精确的内存布局控制?
据我所知 Rust 编译器可以对结构的每个字段进行打包 重新排序和添加填充 如果需要的话 如何指定精确的内存布局 在 C 中 我有StructLayout属性 并且在 C C 中 我可以使用各种编译器扩展 我可以通过检查预期值位置的字节偏移
Rust
memorylayout
堆地址范围内全局变量的地址
我正在调试MPlayer 1 3 0源代码 我看到一个全局变量 其地址 由GDB甚至简单的打印 都在堆分配的范围内 而不是数据部分 我使用检查了堆范围procfs 555555554000 555555834000 r xp 0000000
c
heapmemory
MPlayer
memorylayout
为什么 Linux 二进制文件的虚拟内存地址从 0x8048000 开始?
在 Ubuntu x86 系统上反汇编 ELF 二进制文件时 我不禁注意到代码 text 部分从虚拟地址 0x8048000 开始 并且所有较低的内存地址似乎都未使用 这似乎相当浪费 所有谷歌出现的都是涉及 STACK TOP 的民间传说
Linux
x86
ELF
memorylayout
C++:使用继承的类的内存布局
我知道标准没有指定如何打包数据 我只是想了解类的内存布局 尤其是如何dynamic cast
c
inheritance
multipleinheritance
memorylayout
内存布局意味着Go中[]T无法转换为[]接口?
所以我一直在阅读这两篇文章和这个答案 无法将 string 转换为 interface 表示需要更改内存布局 http jordanorelli com post 32665860244 how to use interfaces in g
interface
go
languagedesign
ducktyping
memorylayout
布局兼容类型的目的是什么?
标准defines当两种类型是布局兼容 但是 我在标准中没有看到当两种类型同时存在时会产生什么后果布局兼容 看起来布局兼容是一个没有在任何地方使用的定义 目的是什么布局兼容 注意 据说 这可能意味着类型具有相同的布局 offsetof对于每
c
struct
languagelawyer
C17
memorylayout
一个类的对象(使用单/多重继承)有多少个vptr?
对于一个其 clas child 具有单一继承且基类多重继承 base1 和 base2 的对象 通常需要多少个 vptr 如果一个对象具有单继承和多继承 那么识别它有多少 vptr 的策略是什么 虽然标准没有指定有关 vptr 的内容 但
c
multipleinheritance
vtable
vptr
memorylayout
用于识别主要基类的类型特征
如果我有一个 Base 类 至少有一个虚函数 以及一个从该类单独继承的 Derived 类 那么 uintptr t derived uintptr t static cast
c
typetraits
memorylayout
vptr
itaniumabi
当只需要一个字节时,为什么 Rust 使用两个字节来表示这个枚举?
它似乎足够聪明 只为 A 使用一个字节 但不够聪明 为 B 使用一个字节 即使只有 8 8 64 种可能性 有什么方法可以让 Rust 解决这个问题 还是我必须手动实现更紧凑的布局 游乐场链接 allow dead code enum A
enums
Rust
memorylayout