1. 程式人生 > >malloc和free的具體用法舉例

malloc和free的具體用法舉例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


//定義一個人開始沒車,後來買車
struct Car
{
char maker[16];//製造商
int price;//價格
};


struct Citizen
{
char name[32];//姓名
int deposite;//存款
Car* car;//NULL表示沒車,如果不用指標表示一直有車了。
};


void buy(Citizen* owner)
{
//建立一個物件
Car* car=(Car*)malloc(sizeof(Car));
strcpy(car->maker,"benz");
car->price=10;
//儲存物件
owner->car=car;//有車了
owner->deposite-=car->price;//錢沒了
}




void discard(Citizen* owner)
{
free(owner->car);//物件被銷燬
owner->car=NULL;//回到無車狀態
}


//賣給別人
void sell(Citizen* owner,Citizen* other)
{
Car* car=owner->car;
car->price=5;//半價出售
other->deposite-=car->price;//存款減少
other->car=car;//別人擁有這輛車


owner->deposite+=car->price;//收回部分成本
//free(car);  不能,車在別人手裡
owner->car=NULL;//回到無車狀態

}


int main()
{


Citizen liangtujun={"liangtujun",100,NULL};


buy(&liangtujun);

Citizen haha={"haha",1000,NULL};

sell(&liangtujun,&haha);

//discard(&liangtujun);


return 0;


}

相關推薦

mallocfree具體用法舉例

#include <stdio.h> #include <stdlib.h> #include <string.h> //定義一個人開始沒車,後來買車 struct Car {char maker[16];//製造商int price;/

記憶體管理(malloc free 用法

一、malloc() 和 free() 的基本概念和基本用法 1. 函式原型及說明 void *malloc( long NumBytes) 該函式分配了NumBytes個位元組,並返回了指向這塊記憶體的指標。如果分配失敗,則返回一個空指標NULL。失敗的原因有很多

newdelete、mallocfree之間的異同點以及用法例項

/* malloc和free new和delete 兩大類之間的<strong><span style="font-size:18px;">根本區別</span></strong> 1.malloc和free是屬於c語

記憶體管理(mallocfree用法

        在C語言的學習中,對記憶體管理這部分的知識掌握尤其重要!之前對C中的malloc()和free()兩個函式的瞭解甚少,只知道大概該怎麼用—— 就是malloc然後free就一切OK了。當然現在對這兩個函式的體會也不見得多,不過對於本文章第三部分的內容倒是有了

關於mallocsizeof的用法

bsp 強制轉換 alt class 強制 int 解釋 void nbsp 問題1: 1.L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));2.newbase = (ElemType *)reallo

malloc free例程

就會 ret sca stdlib.h int 註意 申請 printf malloc #include <stdio.h>#include <stdlib.h>int main(){int a;scanf("%d",&a);int *p=(

分配內存malloc()free()

c1、首先回顧一下內存分配的有關事實。所有的程序都必須留出足夠內存來存儲他們使用的數據。一些內存分配是自動完成的。如:float x;char place[]="dancing oxen creek".於是系統將留出存儲float或者字符串足夠的內存空間,也可明確要求確切的內存,int a[100];這一聲明

Unix系統編程()mallocfree的實現

原因 編程錯誤 alloc 系統編程 OS 內存分配 continued 我們 如何 盡管malloc和free所提供的內存分配接口比之brk和sbrk要容易許多,但在使用時仍然容易犯下各種編程錯誤。 理解malloc和free的實現,將使我們洞悉產生這些錯誤的原因

mallocfree函式詳解(轉載只是為了查閱方便,若侵權立刪)

malloc和free函式詳解   本文介紹malloc和free函式的內容。   在C中,對記憶體的管理是相當重要。下面開始介紹這兩個函式:     一、malloc()和free()的基本概念以及基本用法: 1、函式原型及說明: void *malloc(lon

mallocfree使用要小心

先說一下用法:        char *stemp = (char*)malloc(256 * sizeof(char));         if(stemp == NULL) return

C語言中 malloc free

from:http://blog.sina.com.cn/s/blog_af1a77fa0102xceb.html 一、malloc()和free()的基本概念以及基本用法: 1、函式原型及說明: void *malloc(long NumBytes):該函式分配了NumBytes個位元

淺談C中的mallocfree

一、malloc()和free()的基本概念以及基本用法: 1、函式原型及說明: void *malloc(long NumBytes):該函式在堆上分配了NumBytes個位元組的空間,並返回了指向這塊記憶體的指標。如果分配失敗,則返回一個空指標(NULL)。 關於分

【Linux】mallocfree底層的簡單實現!!!

從作業系統角度來看,程序分配記憶體有兩種方式,分別由兩個系統呼叫完成:brk和mmap(當然在這裡是不考慮共享記憶體) brk是將資料段(.data)的最高地址指標_edata往高地址推; mmap是在程序的虛擬地址空間中(堆和棧中間,稱為檔案對映區域的地方

呼叫malloc()函式之後,核心發生了什麼?附malloc()free()實現的原始碼

         特此宣告:本文參照了另外一篇文章和一個帖子,再結合自己的理解總結了malloc()函式的實現機制。     我們經常會在C程式中呼叫malloc()函式動態分配一塊連續的記憶體空間並使用它們。那麼,這些使用者空間發生的事會引發核心空間什麼樣的反應呢? ma

記憶體分配(malloc()free())

C語言的一個特性是接近底層,對於硬體的控制能力比其他高階動態語言要強。同時,C語言賦予程式設計師更大的自由度,更信任程式設計師。在記憶體的分配與釋放上,我們知道非靜態變數(塊作用域,無連結,自動生存期)在程式進入到變數定義所在的地方(塊或函式內)時分配記憶體,在離開塊作用域時釋放。對於靜態變數,在程式載入到記

【C語言】malloc()free()函式的講解以及相關記憶體洩漏問題

1、函式原型及說明: void *malloc(long NumBytes):該函式分配了NumBytes個位元組,並返回了指向這塊記憶體的指標。如果分配失敗,則返回一個空指標(NULL)。 關於分配失敗的原因,應該有多種,比如說空間不足就是一種。 void free(void *FirstByte): 該

形象描述mallocfree函式以及野指…

CRT的記憶體管理模組是一個管家。    你的程式(簡稱“你”)是一個客人。    管家有很對水桶,可以用來裝水的。    malloc的意思就是“管家,我要XX個水桶”。    管家首先看一下有沒有足夠的水桶給你,如果沒有,那麼告訴你不行。如果夠,那麼登記這些水桶已經被使用了,然後告訴你“拿去用吧”

二維指標mallocfree

刷leetcode 169的時候,先用的二維指標,死活不過,顯示 ‘double free or corruption out' 將二維指標換成二維陣列就過了 仔細看程式碼,才發現 malloc的時候

淺談C中的mallocfree (指標與空間 堆與棧)

淺談C中的malloc和free 在C語言的學習中,對記憶體管理這部分的知識掌握尤其重要!之前對C中的malloc()和free()兩個函式的瞭解甚少,只知道大概該怎麼用——就是malloc然後free就一切OK了。當然現在對這兩個函式的體會也不見得多,不過對於本文章第三

mallocfree實現的原理

還是要認真看深入理解計算機系統 記憶體分配是按照堆塊實現的,一個堆塊是由頭部和有效載荷量組成,其中的有效載荷量就是我們申請的堆的大小。 頭部塊包括 塊大小和是否可用 這兩個部分組成。 在記憶體中這些堆塊以連結串列形勢組成 malloc函式的實質體現在,它有一個將可用的