内存申请的几种方式

栈内存出了方法就会回收。
申请方式
alloca
堆内存申请方式

malloc(biyte位内存)
calloc(bitye,字节)

申请40m 10241024=1m 110=10 10*4=40M
malloc(1024*1024*10*sizeof(int))
等于calloc(1024*1024,sizeof(int))

realloc(p,size);
在原来的地址分配,如果足够没有被其他占用那么直接连续从原来的p地址开始分配 往后分配,否则会新开辟一块内存。

感受内存

#include

void main() {
    int i = 90;
    printf("tes memory\n");
    int b = 1024;
    int kb = b * 1024;
    int m = kb * 1024;//1024*1024*1024 个kb
    int gb = m * 1; //2g 申请不了
    int* p= malloc(gb);//申请不能超过1g,否则测试失败了 返回nul
    if (p != NULL) {
        printf("我申请了内存%d m 地址是%#x\n ,", gb /1024/1024, &p);
    }
    else {
    printf("申请了内存%d m 失败,地址是%#x\n ,", gb /1024/1024,&p);

    }

    getchar();// 暂停
}

感受内存的值

image.png

https://blog.csdn.net/shuaishuai80/article/details/6140979

你可能感兴趣的:(内存申请的几种方式)