memory-alignment

    4熱度

    3回答

    我們知道,有在A大小的不同,當你定義A這樣的: class A { short a; double b; short c; }; 或類似這樣的 class A { short a; short c; double b; }; 我假設我們正在編譯32位操作系統,並且我們告訴編譯器對齊到32位。 編譯器是否真的很難通過實現相同

    2熱度

    1回答

    我使用objdump來反彙編32位Linux上的一些ELF文件。 asm文件採用Intel格式。 在拆機文件,我注意到一些內存插槽象下面這樣: 80483ed: c7 44 24 18 07 00 00 mov DWORD PTR [esp+0x18],0x7 80483f4: 00 80483f5: c7 44 24 1c 0c 00 00 mov DWORD PTR [esp+0x1

    2熱度

    3回答

    我正在處理一些需要大量內存的應用程序。爲了減少內存使用量,我將大對齊結構切換爲1字節(#pragma pack(1))。 之後,我的結構體積縮小了10-15%左右,但出現了一些問題。 當我嘗試通過指針或引用應用程序使用我的結構中的某個字段時,只會崩潰。如果我直接更改字段,它工作正常。 在測試應用程序中,我發現問題在結構中使用小於4字節的字段後開始出現。 測試代碼: #pragma pack(1)

    1熱度

    1回答

    如果我創建以下對準 numpy的陣列 import numpy as np import tables as pt numrows = 10 dt = np.dtype([('date', [('year', '<i4'), ('month', '<i4'), ('day', '<i4')]), ('apples', '<f8'), ('oranges', '

    2熱度

    2回答

    我有一個struct: struct st { short a; int *b; char ch; }; short是2個字節 int*是8個字節在64 char是1字節 所有上述共同應該給我11字節。但如果我做sizeof(st)我得到24個字節。爲什麼struct使用更多的內存以及如何將內存減少到11個字節?

    1熱度

    2回答

    我有一個代碼片段。片段只是加載2個數組,並使用SSE計算它們之間的點積。 代碼在這裏: using namespace std; long long size = 3200000; float* _random() { unsigned int seed = 123; // float *t = malloc(size*sizeof(float)); flo

    -3熱度

    1回答

    我有一個非常奇怪的程序崩潰問題。 我有兩個相同的代碼「代碼A」和「代碼B」如下。 在「代碼B」中,我剛剛更改了變量聲明的順序。 /******** Code A ******/ void MyFunction(char * ONOFF_Flag) { short l_subchoice_s ; char l_subchoice_ca[1] = {'\0'}; ch

    4熱度

    1回答

    我正在測試對齊方式,並確定iOS模擬器有些奇怪(XCode 4.3.2和XCode 4.5)。 在iOS模擬器上,即使使用屬性((aligned(4)))來強制4字節邊界,結構也會與8字節邊界對齊。檢查是否在末尾填充了0x00000001以對齊8字節的邊界。 如果myStruct變量在全局範圍中定義,那麼模擬器會將其與4字節邊界對齊,因此它可能與堆棧有關。 模擬器是i386所以它的32位,它必須對

    2熱度

    2回答

    我在文件中有一些二進制數據並將文件加載到內存中char* data。現在我知道例如在偏移123處開始struct something。 是否安全,做結構的以下 (struct something*) (data + 123) // ??&data [123]?? ,然後訪問的成員。或者我應該像 struct something record; memcpy (&record, data +

    1熱度

    1回答

    那麼header1.h header2.h #include <iostream> struct my_struct { unsigned int a; double b; }; __forceinline void show_h(my_struct* my_struct_ptr) { std::cout << sizeof(my_struct) <<