zz Win32平台下的微軟C編譯器的對齊策略

2021-04-21 01:05:29 字數 671 閱讀 5844

這個問題經常搞糊塗,所謂經常,就是一直都沒徹底搞清楚,幾天看到乙個帖子,裡面有個很好的總結,**一下

win32平台下的微軟c編譯器(cl.exe for 80×86)的對齊策略:

1) 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除;

備註:編譯器在給結構體開闢空間時,首先找到結構體中最寬的基本資料型別,然後尋找記憶體位址能被該基本資料型別所整除

的位置,作為結構體的首位址。將這個最寬的基本資料型別的大小作為上面介紹的對齊模數。

2) 結構體每個成員相對於結構體首位址的偏移量(offset)都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充字

節(internal adding);

備註:為結構體的乙個成員開闢空間之前,編譯器首先檢查預開闢空間的首位址相對於結構體首位址的偏移是否是本成員的整數

倍,若是,則存放本成員,反之,則在本成員和上乙個成員之間填充一定的位元組,以達到整數倍的要求,也就是將預開闢空間

的首位址後移幾個位元組。

3) 結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要,編譯器會在最末乙個成員之後加上填充位元組

(trailing padding)。

備註:結構體總大小是包括填充位元組,最後乙個成員滿足上面兩條以外,還必須滿足第三條,否則就必須在最後填充幾個位元組

以達到本條要求。

STM32平台下的FreeRTOS移植

本文目的是在keil uvision5 mdk 上把freertos移植到stm32平台上去,並練習使用freertos的任務排程功能 二 freertos移植到stm32 三 基於freertos的多工程式 四 總結 特點 freertos核心檔案 可以看出source資料夾下有include資料...

Win32平台下Apache ssl配置指南

本文源自 http raibledesigns.wiki wiki.jsp?page apachessl,並作了必要的修改,補充和簡化。在我的winxp apache1.3.31下面測試通過 假定 你已經熟悉apache的安裝和配置 你對ssl安全連線的基本常識有一定了解 你對php有一定了解 不要...

Linux 32和64位平台下支援LFS

在linux x86 32位 系統上編譯的程式放到linux x86 64 64位 系統上執行的時候出現呼叫lstat或lstat函式的錯誤,返回的錯誤碼值為75,錯誤描述為 value too large for defined data type 為了讓程式能夠使用lfs 大檔案系統 你可以選擇...