亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

c++中常用的內存操作函數

2019-11-06 07:23:46
字體:
來源:轉載
供稿:網友

1.malloc()函數,calloc()函數和free()函數

malloc()函數和free()函數

       malloc()函數原型:

void *malloc(size_t size);

malloc()函數用來內存分配,如果分配成功則返回指向被分配內存的指針(此存儲區中的初始值不確定),否則返回空指針NULL。當然,對于malloc()函數所對應的就是free()函數,你所開辟的內存,后來當然需要釋放。注意malloc()函數是在堆上進行操作的。

free()函數原型:

void free(void *pointer);

free()函數 是用來把在前面分配出去的內存進行回收,以備后備之需。

calloc()函數和realloc()函數

calloc()函數原型:

void *calloc(size_t num_elements,size_t element_size);

calloc()函數也用于分配內存,它主要是要把分配的內存會初始化為0。

realloc()函數原型:

void realloc(void *ptr,size_t new_size);

realloc()函數用于修改一個原先已經分配好的內存塊的大小。使用這個函數,可以進行內存的擴大和縮小。

這幾個函數我在前期的一篇博客中已經詳細的敘述過了,在此就不再太多聲明了。 C語言之動態分配內存

2.memcpy()函數,memmove()函數和memset()函數

memcpy()函數

memcpy()函數原型:

void *memcpy(void *dst, void const *src, size_t length);

memcpy()函數實現:

//memcpy( )函數的實現#include<stdio.h>#include<stdlib.h>#include<assert.h>void *my_memcpy(void *dest, const void* src, size_t length) {    assert(src);         char *pdest = (char *)dest;         const char *psrc = (const char *)src;while (length--)    {        *pdest = *psrc;        pdest++;        psrc++;    }    return dest; }int main() {    char arr1[20] = "abcd";        char *arr2 = "efgk";     my_memcpy(arr1, arr2, 2);        PRintf("%s/n", arr1);     system("pause");         return 0; }

memcpy()函數從src的起始位置復制length個字節到dest的內存起始位,memcpy( )函數 并不關心被復制的數據類型,只是逐字節地進行復制,這給函數的使用帶來了很大的靈活性,可以面向任何數據類型進行復制。 注意: dest 指針要分配足夠的空間,也即大于等于 num 字節的空間。如果沒有分配空間,會出現斷錯誤。 dest 和 src 所指的內存空間不能重疊。 在這里面的重疊問題,就是以下這種情況: 

為了解決這一種重疊的問題,在此我們引入了另一個內存操作函數:memmove()函數。

memmove()函數

memmove()函數原型:

void *memmove(void *dst, void const *src,size_t length);

memmove()函數函數和memcpy()函數所進行的操作差不多,不過會考慮重疊的問題,所以,對于源和目標參數可能存在重疊問題,那么就可以使用memmove(),當src 和 dest 所指的內存區域重疊時,memmove() 仍然可以正確的處理,不過執行效率上會比使用 memcpy() 略慢些。

memmove()函數實現:

//memmove()函數的實現#include<stdio.h>#include<stdlib.h>#include<assert.h>void *my_memmove(void *dst, void * src, size_t length) {    assert(dst);    assert(src);    char *pdest = (char *)dst;    const char *psrc = (const char *)src;    if ((pdest > psrc) && (pdest<psrc + length))            {//從后向前拷貝                while(length--)                {                    *(pdest+length) = *(psrc+length);                }            }            else            {//從前向后拷貝                while(length--)                {                    *pdest++ = *psrc++;                }            }              return dst; }int main() {    int i = 0;          int arr1 []= { 1,2,3,5,4,6,8 };          int sz = sizeof(arr1) / sizeof(arr1[0]);     my_memmove(arr1 + 2, arr1, 16);          for (i = 0; i<sz; i++)          {              printf("%x ",arr1[i]);    }    system("pause");          return 0; }

memset函數 memset函數原型:

void *memset(void *a, int ch, size_t length);

memset()函數是把從a開始的length個字節都設置成為字符值ch,然后返回指向 ptr 的指針。 memset( ) 可以將一段內存空間全部設置為特定的值,所以經常用來初始化字符數組。

memset函數實現:

//memset()函數實現#include<stdio.h>#include<stdlib.h>#include<assert.h>void *my_memset(void *dest, int n, size_t length) {    void *ret = dest;    assert(dest);    while(length--)    {        *(char *)dest = n;        dest = (char*)dest+1;    }    return ret; }int main() {    int arr1[10];           int i = 0;          int sz = sizeof(arr1) / sizeof(arr1[0]);    my_memset(arr1, 0, sz*sizeof(int));    for ( i = 0; i<sz; i++)    {        printf("%d ",arr1[i]);    }    system("pause");    return 0; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区少妇| 日韩精品一区二区视频| 中文字幕在线看视频国产欧美在线看完整| 日本精品在线视频| 亚洲欧洲自拍偷拍| 国产精品一区二区三区成人| 亚洲色图13p| 狠狠躁18三区二区一区| 欧美肥老妇视频| 日韩在线视频一区| 欧美精品久久久久久久免费观看| 国产在线视频不卡| 久久6免费高清热精品| 久久久91精品国产一区不卡| 精品福利视频导航| 欧美极品少妇xxxxⅹ裸体艺术| 久久91亚洲精品中文字幕| 亚洲第一视频在线观看| 亚洲日本成人女熟在线观看| 欧美精品中文字幕一区| 成人黄色影片在线| 91在线免费看网站| 日韩激情视频在线| 亚洲一区二区三区777| 91久久精品美女| 欧美成人国产va精品日本一级| 91久久久久久久久久久久久| 亚洲国产一区二区三区四区| 日韩av最新在线| 欧亚精品中文字幕| 在线观看日韩欧美| 中文字幕国产精品久久| 国产国产精品人在线视| 深夜成人在线观看| 国产欧美一区二区三区视频| 在线视频一区二区| 一区二区三区国产视频| 在线日韩av观看| 久久久午夜视频| 日韩国产欧美精品一区二区三区| 精品亚洲va在线va天堂资源站| 96pao国产成视频永久免费| 成人激情免费在线| 欧美亚洲一区在线| 国产乱肥老妇国产一区二| 国产性色av一区二区| 国产99视频精品免视看7| 亚洲国产三级网| 欧美成人在线免费视频| 91精品国产综合久久香蕉| 亚洲精品小视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 国产精品网站大全| 欧美在线日韩在线| 午夜精品久久久久久99热软件| 大荫蒂欧美视频另类xxxx| 日韩av在线天堂网| 久久精品国产精品| 亚洲精品在线观看www| 午夜精品一区二区三区视频免费看| 91精品国产综合久久香蕉最新版| 亚洲成人免费在线视频| 国产精欧美一区二区三区| 高清欧美性猛交xxxx| 成人午夜小视频| 欧美日韩一区二区免费在线观看| 欧美在线一级va免费观看| 亚洲欧美中文日韩在线v日本| 欧美另类在线观看| 亚洲性夜色噜噜噜7777| 亚洲欧美日韩一区在线| 欧美疯狂性受xxxxx另类| 亚洲精品v天堂中文字幕| 欧美性感美女h网站在线观看免费| 久久综合九色九九| 一本色道久久88综合日韩精品| 国产精品女视频| 91精品国产自产在线观看永久| 亚洲午夜国产成人av电影男同| 97国产suv精品一区二区62| 亚洲视频在线观看免费| 久久久人成影片一区二区三区观看| 久久久精品影院| 欧美午夜激情小视频| 国产偷国产偷亚洲清高网站| 精品中文字幕久久久久久| 青青久久av北条麻妃海外网| 一本大道香蕉久在线播放29| 精品小视频在线| 国产精品久久久久久久美男| 欧美成人免费大片| 亚洲激情中文字幕| 欧美视频中文在线看| 欧美国产日韩中文字幕在线| 国产婷婷色综合av蜜臀av| 亚洲欧美国产精品久久久久久久| 欧美专区中文字幕| 亚洲最大的成人网| 美日韩精品视频免费看| 久久男人资源视频| 在线亚洲男人天堂| 国产精品视频在线观看| 4438全国成人免费| 欧美精品免费在线| 国产视频亚洲视频| 国产成人一区三区| 91精品久久久久久久久久久久久久| 欧美激情第99页| 欧美日韩免费在线观看| 欧美性xxxxx| 2025国产精品视频| 亚洲**2019国产| 亚洲欧洲在线播放| 亚洲综合在线播放| 国产在线日韩在线| 亚洲91精品在线| 色无极亚洲影院| 久久精品久久久久久国产 免费| 中文字幕av一区中文字幕天堂| 亚洲自拍欧美色图| 日韩视频免费在线| 国产精品久久中文| 欧美亚洲成人精品| 久久精品国产69国产精品亚洲| 色悠久久久久综合先锋影音下载| 狠狠久久亚洲欧美专区| 亚洲国产精品久久| 国产精品入口夜色视频大尺度| 久久久视频在线| 91精品国产高清久久久久久久久| 亚洲美女又黄又爽在线观看| 亚洲欧美制服综合另类| 国产专区精品视频| 亚洲综合大片69999| 亚洲r级在线观看| 国产精品第1页| 亚洲国产精品成人va在线观看| 91高清视频免费| 欧美综合国产精品久久丁香| 成人免费在线视频网站| 亚洲丝袜在线视频| 欧美日韩综合视频| 国产精品一区二区女厕厕| 日韩一区二区欧美| 日韩黄色在线免费观看| 亚洲第一在线视频| 亚洲mm色国产网站| 欧美日韩亚洲一区二区三区| 精品一区二区三区电影| 国模视频一区二区三区| 欧美一级免费看| 黑人巨大精品欧美一区二区免费| 成人女保姆的销魂服务| 98视频在线噜噜噜国产| 国产91精品久久久久久久| 91精品视频免费观看| 日韩成人在线视频网站| 亚洲午夜激情免费视频| 亚洲欧美在线x视频| 久久国产天堂福利天堂| 亚洲热线99精品视频| 久青草国产97香蕉在线视频| 国产精品久久久久久网站| 亚洲国产日韩欧美综合久久|