memory-alignment

    4熱度

    1回答

    我發現,hard way,至少boost::program_options是依賴於編譯器配置的結構成員對齊方式。 如果使用默認設置構建boost並使用4字節對齊方式將其鏈接到項目(/Zp4),它將在運行時失敗(使用program_options進行最小測試)。 Boost會生成一個斷言來指示可能的壞調用約定,但真正的原因是結構成員對齊。 有什麼辦法可以防止這種情況發生?如果對齊使代碼不兼容不應該包

    1熱度

    1回答

    我理解爲什麼數據需要對齊(以及爲了實現它而做的所有努力都像填充一樣),所以我們可以減少內存訪問次數,但是這假設處理器只能獲取4的倍數(假設我們使用32位體系結構)。 由於這個假設,我們需要對齊內存。 我的問題是: 爲什麼我們只能訪問4的倍數(效率,硬件限制,另一個)? 這樣做的好處是什麼?爲什麼我們不能訪問所有可用的地址?

    0熱度

    3回答

    編輯: 這是一個後續到SSE2 Compiler Error 這是真正錯誤我經歷過,並通過改變_mm_malloc聲明轉載如下爲Michael Burr建議: 在0x00415116在SO.exe 未處理的異常:0000005:訪問衝突讀取 位置0xffffffff。 在行label: movdqa xmm0, xmmword ptr [t1+eax] 我試圖動態分配t1和t2和according

    1熱度

    3回答

    我有一些軟件,我有一個與icc的紅帽系統工作,它工作正常。當我將代碼移植到使用MIPS運行的IRIX系統時,那麼當出現一些值時,我會得到一些「南」的計算結果。 我在非redhat系統上沒有任何好的調試器,但我已經追蹤到我的一些陣列在它們中間零星地出現「nan」,這導致我的點積計算返回爲「 NAN「。 看到我無法用調試器追蹤它,我在想這個問題可能與memcpy有關。使用動態分配數組的MIPS編譯器m

    6熱度

    3回答

    我想使用'aligned(16)'屬性將函數字節對齊到16字節的邊界。我做了以下內容:void __attribute__((aligned(16))) function() { } (來源:http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html) 但是當我編譯器(gcc foo.c的;不使用生成文件或鏈接腳本),我收到以下錯誤: 的f

    3熱度

    1回答

    你可以通過查看它們告訴他們哪些地址是字對齊? 0x000AE430 0X00014432 0X000B0737 0X0E0D8844

    4熱度

    1回答

    你可以通過定義你自己的分配器來分配一個std :: vector來分配對齊的堆內存。 您可以使用declspec對齊在堆棧上分配c樣式陣列。 但是你可以聲明一個tr1 :: array來保證索引爲零的元素將被對齊嗎?

    2熱度

    2回答

    VirtualAlloc返回的內存塊是否總是與頁面大小對齊?換句話說,模數將始終爲VirtualAlloc的返回值和頁面大小的零?

    6熱度

    4回答

    Visual Studio C++ 2008/2010是否正式支持_mm_malloc?它在malloc.h中定義,但我無法在MSDN庫中找到它的描述。

    7熱度

    2回答

    假設驗證碼: unsigned char list[3] = { 1, 2, 3 }; struct _struct{ unsigned char a; unsigned char b; unsigned char c; } *s; s = (_struct *) list; 我可以假設它總是s->a == 1, s->b == 2, s->c == 3? 或者