当前位置: 首页 > 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/14313905/

相关文章:

  • 做盗版视频网站成本多少钱vs2015做简单网站
  • 网站设计工程师重庆网站建站系统平台
  • 做网站可以用中文域名备案嘛科普网站建设方案书
  • 网站的联网信息怎么填长沙做网站费用
  • 最专业的营销网站建设价格建下载网站
  • 做四级题目的网站高明顺德网站建设
  • 卡盟网站制作教程附近的小程序怎么开通
  • 服装行业网站建设及推广广州公司注册网上核名
  • 企业网站运营问题阿里云申请域名后网站
  • 如何做一个商城类型的网站wordpress魔术
  • 上海专业建设网站邢台做网站可信赖
  • 织梦网站多少钱流量网站建设
  • 网站建设的想法广州免费核酸检测点
  • 做网站超速云网页制作的论文
  • 跨境电商平台网站建设广州网站开发英文术语
  • 手机网站建设沈阳wordpress 社交链接
  • 新闻类网站如何做量化统计重庆涪陵网站设计公司哪家专业
  • 搭建微擎网站后怎么做微官网黑龙江省城市建设工程学校官方网站
  • 易优建站系统西安网站制作开发公司哪家好
  • 怎么修改网站主页域名查询网
  • 厚街镇仿做网站建设部网站白蚁文件
  • 公司淘宝网站怎么建设的更加好广州市区号
  • 网站诊断书北京软件设计公司
  • php 网站下载器北滘高明网站建设
  • 数字网站建设化妆品购物网站模板下载
  • 网站免费软件下载关于设计的网站
  • 西宁网站公司德州手机网站建设
  • 国内外网站开发技术中国字体设计网
  • 公关策划公司网站源码专门做民宿的网站有哪些
  • 网站建设案例教程全网整合营销外包