栈内存出了方法就会回收。
申请方式
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<stdio.h>
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();// 暂停
}