C++ malloc()函数的注意点及使用示例

1гҖҒmalloc()еҮҪж•°зҡ„еӨҙж–Ү件жҳҜstdlib.hпјҢе…¶еҮҪж•°еЈ°жҳҺеҰӮдёӢпјҡ

void* malloc(size_t size);

е…¶дёӯеҸӮж•°size_t sizeиЎЁзӨәеҠЁжҖҒеҶ…еӯҳеҲҶй…Қз©әй—ҙзҡ„еӨ§е°ҸпјҢд»Ҙеӯ—иҠӮдёәеҚ•дҪҚгҖӮ

size_t жҳҜtypedefйҮҚе®ҡд№үзҡ„зұ»еһӢпјҢйҮҚе®ҡд№үиҝҷж ·ж•°жҚ®зұ»еһӢзҡ„дҪңз”Ёе°ұжҳҜи®©дҪҝз”ЁиҖ…дёҖзӣ®дәҶ然пјҢжҢҮзӨәдҪҝз”ЁиҖ…иҝҷдёӘеҸӮж•°иЎЁзӨәдёҖдёӘй•ҝеәҰпјҢеңЁ sizeеҗҺеҠ дёҠtпјҢиЎЁзӨәжҳҜж•ҙеһӢзӣёе…іж•°жҚ®зұ»еһӢзҡ„пјҢд»ҘеҗҺзңӢеҲ°xxx_tзҡ„зұ»еһӢпјҢйҖҡеёёйғҪжҳҜж•ҙеһӢзӣёе…іж•°жҚ®зұ»еһӢйҮҚе®ҡд№үгҖӮ

еңЁиҝҷйҮҢmalloc()еҮҪж•°зҡ„иҝ”еӣһеҖјжҳҜдёҖдёӘжҢҮй’ҲпјҢжҲ–иҖ…иҜҙжҳҜеҲҶй…ҚеҗҺеҶ…еӯҳз©әй—ҙзҡ„йҰ–ең°еқҖ

еҰӮжһңmalloc()еҮҪж•°з”іиҜ·з©әй—ҙжҲҗеҠҹеҲҷиҝ”еӣһдёҖж®өеҶ…еӯҳз©әй—ҙзҡ„йҰ–ең°еқҖпјҢеӨұиҙҘеҲҷиҝ”еӣһNULL

2гҖҒ

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

еңЁиҝҷйҮҢжҳҜдёҚиғҪиҝҷж ·еҶҷзҡ„пјҢдјҡеҮәзҺ°й”ҷиҜҜпјҡд»Һзұ»еһӢ 'void*' еҲ°зұ»еһӢвҖҳintвҖҷзҡ„иҪ¬жҚўж— ж•ҲпјҢеә”иҜҘж”№дёә:

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

3гҖҒеңЁдҪҝз”Ёmalloc()еҮҪж•°з”іиҜ·зҡ„з©әй—ҙд№ӢеүҚпјҢжңҖеҘҪз”Ёmemset()еҮҪж•°жҠҠиҝҷж®өеҶ…еӯҳз©әй—ҙжё…зҗҶдёҖдёӢпјҢеӣ дёәз”Ёmalloc()еҮҪж•°з”іиҜ·зҡ„з©әй—ҙд»…д»…дҝқиҜҒзҡ„жҳҜеҶ…еӯҳз©әй—ҙзҡ„еӨ§е°ҸпјҢ并дёҚдҝқиҜҒеҶ…еӯҳз©әй—ҙжҳҜеҗҰжңүж•°жҚ®еһғеңҫгҖӮ

4гҖҒеҪ“дёҚеңЁдҪҝз”Ёmalloc()еҮҪж•°з”іиҜ·зҡ„з©әй—ҙд№ӢеҗҺпјҢеә”иҜҘдҪҝз”ЁеҰӮдёӢеҮҪж•°йҮҠж”ҫжҺүиҝҷдёӘеҶ…еӯҳз©әй—ҙпјҡ

void  free(void *ptr);

е…¶дёӯvoid *ptrжҳҜmalloc()еҮҪж•°зҡ„иҝ”еӣһеҖјпјҢд№ҹе°ұжҳҜеҶ…еӯҳз©әй—ҙзҡ„йҰ–ең°еқҖ

еҰӮжһңеҸӘзҹҘйҒ“дҪҝз”ЁпјҢиҖҢдёҚзҹҘйҒ“йҮҠж”ҫпјҢеҲҷеңЁ7еӨ©*24е°Ҹж—¶иҝҗиЎҢзҡ„еөҢе…ҘејҸдә§е“ҒдёӯпјҢеҫҲе®№жҳ“дјҡеҮәзҺ°еҶ…еӯҳжі„жјҸпјҢжңҖз»ҲеҜјиҮҙзі»з»ҹзҳ«з—Ә

5гҖҒmalloc()еҮҪж•°еҠЁжҖҒеҲҶй…Қз©әй—ҙзј–зЁӢпјҡ

1 /***************************************
 2 malloc()еҮҪж•°еҠЁжҖҒеҲҶй…Қз©әй—ҙзј–зЁӢпјҡ
 3 (1)е®ҡд№үдёҖдёӘchar*еһӢжҢҮй’ҲеҸҳйҮҸp
 4 (2)дёәpеҲҶй…Қ10дёӘеӯ—иҠӮзҡ„еҶ…еӯҳз©әй—ҙ
 5 (3)еӨҚеҲ¶"come on" еӯ—з¬ҰдёІеҲ°pжҢҮеҗ‘зҡ„еҶ…еӯҳз©әй—ҙ
 6 (4)е°ҶpжҢҮй’ҲжҢҮеҗ‘зҡ„еҶ…еӯҳз©әй—ҙеҶҚжү©еӨ§20дёӘеӯ—иҠӮ
 7 (5)е°Ҷ",baby!"еӯ—з¬ҰеӨҚеҲ¶еңЁpжҢҮеҗ‘з©әй—ҙеӯ—з¬ҰдёІзҡ„еҗҺйқў
 8 (6)йҮҠж”ҫpжҢҮеҗ‘зҡ„з©әй—ҙ
 9 ****************************************/
10 #include <iostream>
11 #include <cstdlib>
12 #include <cstring>
13 using namespace std;
14 
15 int main()
16 {
17 гҖҖгҖҖchar *p;
18 гҖҖгҖҖp = (char *)malloc(10*sizeof(char));
19 
20 гҖҖгҖҖmemset(p,0,10*sizeof(char));
21 
22 гҖҖгҖҖstrcpy(p,"come on");
23 гҖҖгҖҖcout << "p: " << p << endl;
24 
25 гҖҖгҖҖp =(char *)realloc(p,20*sizeof(char));
26 гҖҖгҖҖcout << "p: " << sizeof(p) << endl;
27 
28 гҖҖгҖҖstrcat(p,",baby!");
29 гҖҖгҖҖcout << "p: " << p << endl;
30 
31 гҖҖгҖҖfree(p);
32    return 0;
33 }

иҫ“еҮәпјҡ

1 p: come on
2 p: 4
3 p: come on,baby!




原文链接: https://www.cnblogs.com/ybqjymy/p/12365716.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/193618

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午6:26
下一篇 2023年2月12日 下午6:26

相关推荐