Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
328
|
第九章
簡單摘要如下:對經強制轉型的指標進行提領(dereferencing)通常會違反 strict
aliasing 規則。如果你看到了
gcc
的警告訊息“dereferencing type-punned pointer
will break strict-aliasing rules”(對經強制轉型的指標進行提領將破壞 strict-
aliasing 規則),代表你已經違反了該規則。strict aliasing 早已是 C++ 語言的一部
分,但是 C 語言只有 C99 將它標準化。
gcc
,正如警告訊息所提到的那樣,會實施
strict aliasing;這麼做將可產生更優化的程式碼。
附帶一提,實際的規則可以在 ISO C99 標準的第 6 章〈處理器傾向〉一節找到。
管理資料區段
Unix 系統以往就有提供介面,可用於直接管理資料區段(data segment)。然而,多數
程式並未直接使用這些介面,因為
malloc()
以及其他分配機制,比較容易使用而且功能
更強大。本節我將說明這些介面,以滿足好奇的讀者及想要自己實作基於堆積(heap-
based)之分配機制的少數讀者:
#include <unistd.h>
int brk (void *end);
void * sbrk (intptr_t increment);
這些函式的名稱源自老舊的 Unix 系統,其中堆積(heap)與堆疊(stack)位於相同的
區段。堆積中的動態記憶體分配從區段的底部向上成長;而堆疊則會從區段頂部向下朝 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812