malloc()和calloc()有啥区别
malloc和calloc函數(shù)在參數(shù)百個(gè)數(shù)、初始化內(nèi)存空間、函數(shù)返回值上有區(qū)別:
1、參數(shù)個(gè)數(shù)上的區(qū)別:
malloc函數(shù):malloc(size_t?size)函數(shù)有一個(gè)參數(shù),即要度分配的內(nèi)存空間的大小。
calloc函數(shù):calloc(size_t?numElements,size_t?sizeOfElement)有兩個(gè)參數(shù),分別為元素的數(shù)目和每個(gè)元素的大小,這兩個(gè)參數(shù)的乘積就是要分配的內(nèi)存空間的大小。
2、初始化內(nèi)存空間上的區(qū)問別:
malloc函數(shù):不能初始化所分配的內(nèi)存空間,在動(dòng)態(tài)分配完內(nèi)存后,里邊答數(shù)據(jù)是隨機(jī)的垃圾數(shù)據(jù)。
calloc函數(shù):能初始化所分配的內(nèi)存空間,在動(dòng)態(tài)分配完內(nèi)存后,自動(dòng)初始化該內(nèi)存空間為零。
3、函數(shù)返回內(nèi)值上的區(qū)別:
malloc函數(shù):函數(shù)返回值是一個(gè)對象。
calloc函數(shù):函數(shù)返回值是一個(gè)數(shù)組。
?
實(shí)例
#ifdef DEBUGaddrs_len = 1;addrs = calloc(4, sizeof (ipv4_t));addrs[0] = inet_addr("0.0.0.0"); #elseaddrs_len = 2;addrs = calloc(addrs_len, sizeof (ipv4_t));addrs[0] = inet_addr("192.168.0.1"); // Address to bind toaddrs[1] = inet_addr("192.168.1.1"); // Address to bind to #endif?
總結(jié)
以上是生活随笔為你收集整理的malloc()和calloc()有啥区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统提升架构能力之10种mysql主从实
- 下一篇: centos 修改开机画面