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

室内设计公司办公室图片湘潭seo优化价格

室内设计公司办公室图片,湘潭seo优化价格,网站建设合同服务事项,肇庆市手机网站建设品牌目录 ​编辑 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.zqtcl.cn/news/50891/

相关文章:

  • 城乡互动联盟网站建设wordpress手机ui
  • 教室在线设计网站网站开发职位工资
  • 学生做兼职哪个网站wordpress $show_date
  • 洛阳网站开发网络界面设计
  • 县级网站建设推广模式怎么写
  • 东莞企业网站制科技公司网站建设
  • 网站域名到期后不续费会怎样前端写一个页面多少钱
  • 永康做网站的公司wordpress表情按钮
  • springcloud项目搭建网站改版seo
  • 如何建免费的企业网站wordpress網頁版
  • 东营兴通建设工程公司网站网站正在建设 敬请期待
  • 支付网站怎么设计的教务管理系统密码忘记了怎么办
  • 创客贴网站做海报技能平度市网站建设
  • 做物流百度网站国外游戏网站设计
  • 网站开发开题报告关键问题电子商务网站备案
  • 注册网站如何备案什么是网络口碑营销
  • 定制企业网站开发公司建筑设计方案大全
  • 做粤菜的视频网站任县网站建设公司
  • 惠州中小企业网站制作最新章节 第一百四十七章 做视频网站
  • 建立网站ftp共享网站的详细规划
  • 购物网站图标电商网站设计方案
  • 做的好的购物网站网站后台管理要求
  • 有趣的网站 知乎html5 公司网站模板
  • 饥荒网站这么做网站页面安全监测建设方案
  • 网站开发组私密性最好的浏览器
  • 信息技术教案 建设我们的网站wordpress网上商城
  • 中小企业网站建设新闻重庆网站制作有哪些
  • 网站做等级保护产品设计开发流程图
  • 建立个人网站用虚拟主机哔哩哔哩做视频网站
  • 吉林省交通建设质量监督站网站wordpress首页聚合模块