C語言記憶體

2021-07-08 14:45:14 字數 2048 閱讀 1876

返回viod *型別的指標,同時為未初始化的記憶體空間。

需要顯式的進行型別轉換,以及分配失敗處理,初始化

int *p=null;

/***************型別轉換******************/

p = (int *)malloc(sizeof(int));

/*************分配失敗處理****************/

if (p==null)else

/****************初始化處理***************/

memset(p,0,sizeof(int));//初始化處理

memset(void *p,int c,int n )
*c:需要初始化成什麼內容

n :操作的記憶體空間長度

下面是管理資訊的結構體:

注意:寫入大小不能超出申請空間的大小,否則會覆寫掉後面一塊位址的管理資訊

free(p);

p=null;

注意:使用malloc函式分配的堆空間在程式結束之前必須釋放。

void *calloc(int n,int size);
calloc函式得到的記憶體空間是經過初始化的,其內容全為0。calloc函式適合為陣列申請空間,可以將size設定為陣列元素的空間長度,將n設定為陣列的容量。

void * realloc(void * p,int n);
其中,指標p必須為指向堆記憶體空間的指標,即由malloc函式、calloc函式或realloc函式分配空間的指標。realloc函式將指標p指向的記憶體塊的大小改變為n位元組。

記憶體映像其實就是在記憶體中建立乙個和外存檔案完全相同的映像。使用者可以將整個檔案對映到記憶體中也可以部分對映到記憶體。系統會將對記憶體映像的改動如實的反映到外存檔案中。從而實現了通過記憶體映像對外存檔案的操作。
#include

#include

void *mmap(void *start,size_t length,int port,int flag,int fd,off_t offset)

map_private表示對記憶體映像進行的改動不反映到外存檔案中。

map_shared表示對記憶體映像進行的改動反映到外存檔案中。

fd檔案描述符

offset表示所映像的內容距檔案頭的距離。

int munmap(void *start,size_t length);
函式原型:

void *memcpy(void *dest, const

void *src, size_t n);

從源src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中

函式原型:

void *memset(void *s, int ch, unsigned n);
作用:將已開闢記憶體空間 s 的首 n 個位元組的值`設設定為值 ch。

函式原型:

extern

char *strstr(char *str1, const

char *str2);

語法:

strstr(str1,str2);
printf("\033[2j");
通過變數獲取變數型別。

int a;//a是int型

typeof(a) b; //typeof(a) 實際上就是int

C語言記憶體

1.ram和rom都是半導體儲存器,乙個叫隨機儲存器掉電丟失,乙個叫唯讀儲存器掉電儲存。2.ram又分為靜態和動態,靜態的速度非常快,動態的慢但是便宜,ddr ram是電腦中常用儲存器,動態記憶體中的動態是因為乙個dram單元儲存的是0還是1取決於電容是否有電荷,所以時間一長容易電荷變化,所以需要加...

C語言記憶體

全域性變數 外部變數 出現在 塊 之外的變數就是全域性變數。區域性變數 自動變數 一般情況下,塊 內部定義的變數就是自動變數,也可使用auto顯示定義。靜態變數 是指記憶體位置在程式執行期間一直不改變的變數,用關鍵字static修飾。塊內部的靜態變數只能被這個 塊內部訪問,塊外部的靜態變數只能被定義...

C語言記憶體

1.一直對c語言記憶體的分布,不太清楚,模模糊糊,查了一些資料,簡單敘述下,以後工作中再結合工作看看 一 iar記憶體的分布,通過看生成的map檔案,分三個段 1 位址從低到高,先是 段 有對應的位址 主要是text ro code 跟ro data const唯讀資料 一般 段的資料都是儲存在記憶...