memory-alignment

    3熱度

    1回答

    下面的代碼(MSVC 2012年,32位): #include <iostream> int main() { double d; std::cout<<_alignof(double)<<std::endl; std::cout<<((size_t)(&d)) % _alignof(double)<<std::endl; return 0; }

    1熱度

    1回答

    //TeamSize is an integer int Seg_id = shmget(SHM_KEY,sizeof(Word)*TeamSize,IPC_CREAT); void* Seg_ptr = shmat(Seg_id,0,0); new(Seg_ptr) Word[TeamSize]; 我在這段代碼中遇到了問題。 Word類是一個我用8字節字符數組和一些解析函數定義的類

    2熱度

    1回答

    我當前的代碼是: a = new int[10]; 和a地址是0x...040我希望它是4096字節對齊,所以我試圖將其更改爲: a = new __declspec(align(4096)) int[10]; ,但卻仍不能工作(地址仍然以040結束,而不是000。我在做什麼錯了?

    2熱度

    1回答

    對於以下結構,結構的實際(無填充)大小爲54.在具有MinGW(GCC)4.8的64位(Windows 7)計算機上.1 x86_64,我得到sizeof(BMPHeader)爲56,這是可以理解的。根據BMP文件格式的要求,結構應該沒有填充。我有三個選項(優先級排序): C++ 11的alignas(1) struct __attribute__ ((packed)) BMPHeader #pr

    1熱度

    1回答

    我有以下代碼,並且不確定是使用結構對齊還是memcpy將結構A複製到自定義「堆棧」字符/字節數組中。 對於以下兩種代碼選擇或任何錯誤的選擇有什麼好處/不利之處嗎? 必要的結構/函數。 struct B { int type; struct B *prev; } struct A { struct B base; int n; struct B

    8熱度

    2回答

    我一直在使用Valgrind尋找我的代碼中的內存泄漏,而沒有發現內存泄漏,一些錯誤報告所有源自於單功能/類方法: ==17043== ERROR SUMMARY: 10100 errors from 3 contexts (suppressed: 0 from 0) ==17043== ==17043== 100 errors in context 1 of 3: ==17043== Sys

    1熱度

    1回答

    我想知道爲什麼下面的宏爲C中的數據對齊工作? #define CMIALIGN(x,n) (size_t)((~(n-1))&((x)+(n-1)))說如果n等於7爲什麼下面的宏應該工作? #define ALIGN8(x) (size_t)((~7)&((x)+7)。你能用一些例子來展示它,並告訴爲什麼這個公式有效嗎?數據對齊是否還有其他有形公式?

    3熱度

    1回答

    我已經閱讀了關於對齊的這篇文章:http://www.ibm.com/developerworks/library/pa-dalign/ 問題出現的是如何找出特定處理器的內存訪問粒度? 例如Intel Xeon。 不幸的是,當我嘗試「內存訪問粒度英特爾至強」或「內存對齊英特爾至強」時,谷歌無法幫助我。

    0熱度

    1回答

    關注主題How is an array aligned in C++ compared to a type contained?我做了一個實驗。 下面是代碼: #include<iostream> using namespace std; int main() { const int N = 12; { float p1[N], p2[N]; co

    2熱度

    1回答

    這個簡單類的類成員是否在內存中連續? class A{ A(){ /* somecode */} ~A(); Eigen::Matrix<5,1,double> a; Eigen::Matrix<9,1,double> b; }; std::vector<A> vec(10); char * p = interprete_cast<char*>(&