当前位置: 首页 > news >正文

欧美做电影 迅雷下载网站济南网站设计公司推荐

欧美做电影 迅雷下载网站,济南网站设计公司推荐,东莞微网站制作公司,哈尔滨企业网站排名目录 ​编辑 1.为什么要用动态内存分配 2.malloc和free 2.1 malloc 2.2 free 3.calloc和realloc 3.1 calloc 3.2 realloc 4.常见的动态内存的错误 4.1 对NULL的解引用操作 4.2 对动态内存开辟空间的越界访问 4.3 对非动态内存开辟空间用free释放 4.4 使用free释放动…目录 ​编辑 1.为什么要用动态内存分配 2.malloc和free 2.1 malloc 2.2 free 3.calloc和realloc 3.1 calloc 3.2 realloc 4.常见的动态内存的错误 4.1 对NULL的解引用操作 4.2 对动态内存开辟空间的越界访问 4.3 对非动态内存开辟空间用free释放 4.4 使用free释放动态开辟内存的一部分 4.5 对一块动态内存多次释放 4.6 动态开辟内存忘记释放内存泄漏 5. C/C程序内存区域划分 6.完结散花 悟已往之不谏知来者犹可追                                                         创作不易宝子们如果这篇文章对你们有帮助的话别忘了给个免费的赞哟~  1.为什么要用动态内存分配 我们已掌握的内存开辟方式有~ int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 但是上述开辟空间的方式有俩个特点 1.空间开辟的大小是固定的~ 2. 数组在申明的时候一定要指定数组的长度而数组空间一旦确定了就不能调整大小~ 但是对于空间的需求不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知 道那数组的编译时开辟空间的方式就不能满足了。 C语言引入了动态内存开辟让程序员自己可以申请和释放空间就比较灵活了。   2.malloc和free 2.1 malloc int main() {int i, n;char* buffer;printf(How long do you want the string? );scanf(%d, i);buffer (char*)malloc(i 1);if (buffer NULL) exit(1);for (n 0; n i; n)buffer[n] rand() % 26 a;buffer[i] \0;printf(Random string: %s\n, buffer);free(buffer);buffer NULL;return 0; } 2.2 free 注意在使用free时我们只是将动态内存开辟的空间释放和回收然而我们用来接受返回值的指针依然记得这块空间的地址所以我们要将其置为空指针NULL~ 3.calloc和realloc 3.1 calloc 举个栗子啦~ int main() {int* p (int*)calloc(10, sizeof(int));for (int i 0; i 10; i){printf(%d , p[i]);}return 0;free(p);p NULL; } 运行效果如下~ 3.2 realloc • realloc函数的出现让动态内存管理更加灵活。 • 有时会我们发现过去申请的空间太小了有时候我们又会觉得申请的空间过大了那为了合理的时候内存我们⼀定会对内存的大小做灵活的调整。那 realloc 函数就可以做到对动态开辟内存大小的调整。 函数原型如下 void* realloc (void* ptr, size_t size);• ptr 是要调整的内存地址 • size 调整之后新大小 • 返回值为调整之后的内存起始位置。 • 这个函数调整原内存空间大小的基础上还会将原来内存中的数据移动到 新 的空间。 • realloc在调整内存空间的是存在两种情况 ◦ 情况1原有空间之后有足够大的空间 ◦ 情况2原有空间之后没有足够大的空间 由于上述的两种情况realloc函数的使用就要注意⼀些~ #include stdio.h #include stdlib.h int main() { int *ptr (int*)malloc(100); if(ptr ! NULL) { //业务处理 } else { return 1; } //扩展容量 //代码1 - 直接将realloc的返回值放到ptr中 ptr (int*)realloc(ptr, 1000);//如果申请失败ptr接受NULL导致ptr失忆 //代码2 - 先将realloc函数的返回值放在p中不为NULL在放ptr中 int*p NULL; p realloc(ptr, 1000); if(p ! NULL) { ptr p; } //业务处理 free(ptr); return 0; } 4.常见的动态内存的错误 4.1 对NULL的解引用操作 void test() { int *p (int *)malloc(INT_MAX/4); *p 20;//如果p的值是NULL就会有问题 free(p); } 4.2 对动态内存开辟空间的越界访问 void test() { int i 0; int *p (int *)malloc(10*sizeof(int)); if(NULL p) { exit(EXIT_FAILURE); } for(i0; i10; i) { *(pi) i;//当i是10的时候越界访问 } free(p); } 4.3 对非动态内存开辟空间用free释放 void test() { int a 10; int *p a; free(p);//ok? } 4.4 使用free释放动态开辟内存的一部分 void test() { int *p (int *)malloc(100); p; free(p);//p不再指向动态内存的起始位置 } 4.5 对一块动态内存多次释放 void test() { int *p (int *)malloc(100); free(p); free(p);//重复释放 } 注但如果将p置为空指针NULLfree(p)重复也不会报错本质上free并没有实施 4.6 动态开辟内存忘记释放内存泄漏 void test() { int *p (int *)malloc(100); if(NULL ! p) { *p 20; } } int main() { test(); while(1); } 忘记释放不再使用的动态开辟的空间会造成内存泄漏。 切记动态开辟的空间⼀定要释放并且正确释放 5. C/C程序内存区域划分 C/C程序内存分配的几个区域 1. 栈区stack在执行函数时函数内局部变量的存储单元都可以在栈上创建函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中效率很高但是分配的内 存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。 2. 堆区heap⼀般由程序员分配释放若程序员不释放程序结束时可能由OS回收。分配方式类似于链表。 3. 数据段静态区static存放全局变量、静态数据。程序结束后由系统释放。 4. 代码段存放函数体类成员函数和全局函数的⼆进制代码。 6.完结散花 好了这期的分享到这里就结束了~ 如果这篇博客对你有帮助的话可以用你们的小手指点一个免费的赞并收藏起来哟~ 如果期待博主下期内容的话可以点点关注避免找不到我了呢~ 我们下期不见不散~~
http://www.hkea.cn/news/14275031/

相关文章:

  • 设计营销型网站域名前端开发人员招聘
  • 最好的网站模板世界搜索引擎大全
  • 企业网站设计 优帮云检察机关门户网站建设
  • 百度推广免费建站秦皇岛市卫生学校官网
  • 上海网站制作公司有哪些中装建设集团官网
  • 专门做旅游的视频网站有哪些广东省城乡建设部网站首页
  • 西安大网站建设公司seo排名点击软件运营
  • 厦门 网站建设 公司哪家好一级造价工程师报名时间
  • 全屏的翻页网站这么做lng企业自建站
  • 怎么创建一个自己的网站网站商城具有哪些功能模块
  • 网站制作公司兴田德润怎么联系腾讯如何做网站
  • 怎么建立一个网站的快捷方式市场推广12种推广渠道
  • 什么网站做二维码比较好菏泽网站备案拍照
  • 学校网站建设问卷调查特效制作软件
  • 网站域名跳转怎么做windows删除wordpress
  • 哪里有做桥梁模型的网站小程序制作二维码
  • 电子商务网站的建设目标教育机构做网站素材
  • 网站建设询价邀请函手游发号网站模板
  • 成都网站推广公司网站备案人有什么责任
  • 什么专业是做网站免费入驻的卖货平台
  • 网站建设个体营业执照网站漏洞解决
  • vs2015 建设微网站sem是什么的英文缩写
  • 建设部 招投标网站wordpress数据都被存在哪
  • 临清网站建设费用dw网站站点建立后怎么做
  • 免费建网站哪家好本地江苏网站建设
  • 沧州手机网站哪个网络公司做网站好
  • python大型网站开发Wordpress页面打开慢
  • 天津市建设行业联合会网站做网站要考虑什么问题
  • 阿里云虚拟主机与网站吗wex5做视频网站
  • discuz 做的网站企业为什么需要流程管理