Nh đ ng trong ANSI-C ộ

Một phần của tài liệu Bài 1 : Cấu Trúc Của Một Chương Trình C++ ppsx (Trang 54 - 56)

I like nter Milan too.

Bnh đ ng trong ANSI-C ộ

Toán t ửnew và delete là đ c quy n C++ và chúng không có trong ngôn ng C. Trongộ ề ữ

ngôn ng C, đ có th s d ng b nh đ ng chúng ta ph i s d ng th vi nữ ể ể ử ụ ộ ớ ộ ả ử ụ ư ệ

stdlib.h. Chúng ta s xem xét cách này vì nó cũng h p l trong C++ và nó v n cònẽ ợ ệ ẫ

đượ ử ục s d ng trong m t s chộ ố ương trình.

Hàm malloc

Đây là m t hàm t ng quát đ c p phát b nh đ ng cho con tr . C u trúc c a nó nhộ ổ ể ấ ộ ớ ộ ỏ ấ ủ ư

sau:

void * malloc (size_t nbytes);

trong đó nbytes là s byte chúng ta mu n gán cho con tr . Hàm này tr v m t con trố ố ỏ ả ề ộ ỏ

ki u ể void*, vì v y chúng ta ph i chuy n đ i ki u sang ki u c a con tr đích, ví d : ậ ả ể ổ ể ể ủ ỏ ụ

char * ronny;

ronny = (char *) malloc (10);

Đo n mã này c p phát cho con tr ạ ấ ỏronny m t kh i nh 10 byte. Khi chúng ta mu nộ ố ớ ố

ph n t mong mu n v i kích thầ ử ố ớ ướ ủc c a chúng. Th t may m n là chúng ta có toán tậ ắ ử

sizeof, toán t này tr v kích thử ả ề ướ ủc c a m t ki u d li u c th . ộ ể ữ ệ ụ ể

int * bobby;

bobby = (int *) malloc (5 * sizeof(int));

Đo n mã này c p phát cho ạ ấ bobby m t kh i nh g m 5 s nguyên ki u ộ ố ớ ồ ố ể int, kích c c aỡ ủ

ki u d li u này có th b ng 2, 4 hay h n tùy thu c vào h th ng mà chể ữ ệ ể ằ ơ ộ ệ ố ương trình được d ch. ị

Hàm calloc.

calloc ho t đ ng r t gi ng v i ạ ộ ấ ố ớ malloc, s khác nhau ch y u là khai báo m u c aự ủ ế ẫ ủ

nó:

void * calloc (size_t nelements, size_t size);

nó s d ng hai tham s thay vì m t. Hai tham s này đử ụ ố ộ ố ược nhân v i nhau đ có đớ ể ược kích thướ ổc t ng c ng c a kh i nh c n c p phát. Thông thộ ủ ố ớ ầ ấ ường tham s đ u tiênố ầ

(nelements) là s ph n t và tham s th c hai (ố ầ ử ố ứ size) là kích thướ ủc c a m i ph n t .ỗ ầ ử

Ví d , chúng ta có th đ nh nghĩa ụ ể ị bobby v i ớ calloc nh sau: ư

int * bobby;

bobby = (int *) calloc (5, sizeof(int));

M t đi m khác nhau n a gi a ộ ể ữ ữ malloccalloccalloc kh i t o t t c các ph n tở ạ ấ ả ầ ử

c a nó v 0. ủ ề

Hàm realloc. (adsbygoogle = window.adsbygoogle || []).push({});

Nó thay đ i kích thổ ướ ủc c a kh i nh đã đố ớ ượ ấc c p phát cho m t con tr . ộ ỏ

void * realloc (void * pointer, size_t size);

tham s ốpointer nh n vào m t con tr đã đậ ộ ỏ ượ ấc c p phát b nh hay m t con tr null,ộ ớ ộ ỏ

size ch đ nh kích thỉ ị ướ ủc c a kh i nh m i. Hàm này s c p phát ố ớ ớ ẽ ấ size byte b nhộ ớ

cho con tr . Nó có th ph i thay đ i v v trí c a kh i nh đ có th đ ch cho kíchỏ ể ả ổ ị ị ủ ố ớ ể ể ủ ỗ

thước m i c a kh i nh , trong trớ ủ ố ớ ường h p này n i dung hi n th i c a kh i nh đợ ộ ệ ờ ủ ố ớ ược copy t i v trí m i đ đ m b o d li u không b m t. Con tr m i tr t i kh i nhớ ị ớ ể ả ả ữ ệ ị ấ ỏ ớ ỏ ớ ố ớ

được hàm tr v . N u không th thay đ i kích thả ề ế ể ổ ướ ủc c a kh i nh thì hàm s tr vố ớ ẽ ả ề

m t con tr null nh ng tham s ộ ỏ ư ốpointer và n i dung c a nó s không b thay đ i. ộ ủ ẽ ị ổ

Hàm free.

Hàm này gi i phóng m t kh i nh đ ng đã đả ộ ố ớ ộ ượ ấc c p phát b i ở malloc, calloc ho cặ

realloc.

Hàm này ch đỉ ược dùng đ gi i phóng b nh để ả ộ ớ ượ ấc c p phát b i các hàm ở malloc,

calloc and realloc.

Một phần của tài liệu Bài 1 : Cấu Trúc Của Một Chương Trình C++ ppsx (Trang 54 - 56)