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

门户网站demo下载帮别的公司做网站违法吗

门户网站demo下载,帮别的公司做网站违法吗,网络营销的目的是什么,安徽服饰网站建设文章目录 前言1.malloc2.free3.calloc4.realloc5.动态内存常见错误6.动态内存经典笔试题分析7.柔性数组8.C/C中的内存区域划分 前言 文章的标题是动态内存管理#xff0c;那什么是动态内存管理#xff1f;为什么有动态内存管理呢#xff1f; 回顾一下以前学的知识#xff… 文章目录 前言1.malloc2.free3.calloc4.realloc5.动态内存常见错误6.动态内存经典笔试题分析7.柔性数组8.C/C中的内存区域划分 前言 文章的标题是动态内存管理那什么是动态内存管理为什么有动态内存管理呢 回顾一下以前学的知识我们已经掌握的开辟内存的方式有以下几种 char ch a; int val 10; float f_val 12.8f; int arr[20] { 0 }; //....上述开辟内存的方式有几个弊端 开辟空间的大小是固定的数组在声明的时候必须指定数组的长度数组空间⼀旦确定了大小就不能调整了 但是对于空间的需求不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道那数组在编译时就开辟空间的方式就不能满⾜了。 C语言引⼊了动态内存开辟让程序员自己可以申请和释放空间就比较灵活了。 1.malloc 这个函数的功能是向内存申请一块连续的内存空间然后返回一个指向该空间的起始地址的指针。 如果空间开辟成功则返回一个指向该空间起始地址的指针。如果空间开辟失败则返回一个NULL指针。因此函数的返回值需要做检查开辟的空间不会被初始化。返回值的类型是void*所以该函数并不知道所开辟空间的类型需要空间的使用者自己决定。当该函数的参数是0是返回值是未定义的取决于编译器。头文件stdlib.h 使用malloc函数申请40个字节的空间 当函数的参数是0时vs2019中是随机值 既然空间是程序员申请的那么最后由谁释放呢 程序员自己释放。程序结束操作系统回收 下面就来介绍如何释放 2.free C语言提供了另外⼀个函数free专⻔是⽤来做动态内存的释放和回收的函数原型如下 该函数用来释放由malloc、calloc、realloc申请的空间的如果参数 ptr 指向的空间不是动态开辟的那free函数的行为是未定义的。如果参数 ptr 是NULL指针则函数什么事都不做。该函数不会改变指针ptr的值因此为了避免野指针的出现要将其及时置为NULL。 3.calloc 该函数的功能跟malloc差不多区别在于 该函数的参数有两个一个是有几个元素一个是每个元素的大小。该函数会将申请的空间初始化为全0。 4.realloc realloc函数的出现让动态内存管理更加灵活。 有时会我们发现过去申请的空间太小了有时候我们⼜会觉得申请的空间过⼤了那为了合理的使用内存我们⼀定会对内存的大小做灵活的调整。那 realloc 函数就可以做到对动态开辟内存大小的调整。 ptr 是要调整的内存地址size 调整之后新大小返回值为调整之后的内存起始位置。这个函数调整原内存空间大小的基础上还会将原来内存中的数据移动到新的空间。realloc在调整内存空间的是存在两种情况 情况1原有空间之后有足够大的空间情况2原有空间之后没有足够大的空间 情况1 当是情况1 的时候要扩展内存就直接原有内存之后直接追加空间原来空间的数据不发生变化。情况2 当是情况2的时候原有空间之后没有⾜够多的空间时扩展的⽅法是在堆空间上另找⼀个合适⼤⼩连续空间来使⽤。这样函数返回的是⼀个新的内存地址。 既然该函数有两种特殊情况那我们在使用时也应该更加注意 下面的代码有没有问题呢 int main() {//1. 先申请一部分空间int* p (int*)malloc(20);if (NULL p){perror(malloc);return 1;}//2.扩容空间p (int*)realloc(p, 40);if (NULL p){perror(realloc);return 1;}//3.使用//.......free(p);p NULL;return 0; }假如realloc开辟空间失败了那么它会返回一个空指针p就是空指针了。 好家伙没给我扩容成功我以前的数据也没了真可以 所以在接收realloc的返回值时我们应该使用你一个临时变量接收判断临时变量是不是空指针然后再对p进行操作。 所以应该这样写 #includestdlib.hint main() {//1. 先申请一部分空间int* p (int*)malloc(20);if (NULL p){perror(malloc);return 1;}//2.扩容空间int* tmp NULL;tmp (int*)realloc(p, 40);//先判断realloc的返回值if (tmp ! NULL){p tmp;tmp NULL;}//3.使用//....free(p);p NULL;return 0; }5.动态内存常见错误 对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放 使用free释放⼀块动态开辟内存的⼀部分 对同⼀块动态内存多次释放 动态开辟内存忘记释放内存泄漏 6.动态内存经典笔试题分析 题目一 void GetMemory(char* p) {p (char*)malloc(100); } void Test(void) {char* str NULL;GetMemory(str);strcpy(str, hello world);printf(str); }此处是值传递并不会为str真正开辟空间str还是NULL。 题目二 char* GetMemory(void) {char p[] hello world;return p; } void Test(void) {char* str NULL;str GetMemory();printf(str); }p变量生命周期为GetMemory函数内函数结束变量销毁。使用一个已经被销毁的变量的地址结果是不可预测的 3.题目三 void Test(void) {char* str (char*)malloc(100);strcpy(str, hello);free(str);if (str ! NULL){strcpy(str, world);printf(str);} }str指向的空间被释放那么str就是野指针了但是str还是指向那块内存空间向str中拷贝world,那就是非法访问了。 7.柔性数组 什么是柔性数组 也许你从来没有听说过柔性数组flexible array这个概念但是它确实是存在的。C99 中结构中的最后⼀个元素允许是未知大小的数组这就叫做『柔性数组』成员。 struct s {int i;char ch;int a[]; //int a[0] };其中a就是一个柔性数组。 柔性数组的特点 结构中的柔性数组成员前⾯ 必须⾄少⼀个其他成员。sizeof 返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构体用malloc ()函数进行内存的动态分配并且分配的内存应该大于结构体的大小以适应柔性数组的预期大小。 柔性数组的使用 如果我们不使用柔性数组那么如何实现上述代码呢 虽然不适用柔性数组也能达到目的但使用柔性数组有两个好处 方便内存的释放 如果我们的代码是在⼀个给别⼈⽤的函数中你在⾥⾯做了⼆次内存分配并把整个结构体返回给⽤⼾。⽤⼾调⽤free可以释放结构体但是⽤⼾并不知道这个结构体内的成员也需要free所以你不能指望⽤⼾来发现这个事。所以如果我们把结构体的内存以及其成员要的内存⼀次性分配好了并返回给⽤⼾⼀个结构体指针⽤⼾做⼀次free就可以把所有的内存也给释放掉。 有利于访问速度 连续的内存有益于提⾼访问速度也有益于减少内存碎⽚。 8.C/C中的内存区域划分 栈区 栈区stack在执⾏函数时函数内局部变量的存储单元都可以在栈上创建函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中效率很⾼但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。 堆区 堆区heap⼀般由程序员分配释放若程序员不释放程序结束时可能由OS回收。分配⽅方式似于链表。 静态区 数据段静态区存放全局变量、static修饰的变量。程序结束后由系统释放。 代码段 代码段存放函数体类成员函数和全局函数的⼆进制代码。 本次的分享就到这里啦如有错误请纠正。
http://www.zqtcl.cn/news/592647/

相关文章:

  • 做的精美的门户网站推荐附近编程培训机构
  • 台州黄岩做网站太原网站建设王道下拉惠
  • 深圳设计网站公司互联网服务平台投诉中心
  • 做seo网站优化哪家强济南网站建设公司排名
  • tp5网站文档归档怎么做手机虚拟机哪个好用
  • 网站建设公司的业务范围万网做网站多少钱
  • 做网站要用写接口6wordpress 汽车租赁
  • 网站开发方向paypal账号注册
  • 如何选择做pc端网站重庆平台网站建设企业
  • 一个人做网站好累电子商城采购流程
  • 网站制作维护价格信息网站建设方案
  • 如何选择建网站公司能看人与动物做的网站
  • 温州网站建设方案外包不能访问子目录的网站
  • 建设拼多多一样网站需要多少钱wordpress企业站主题免费
  • 无锡网站制作哪家公司好做微信文章的网站
  • 网站 制作信产部网站备案
  • 做流程图表的网站网络营销推广网站收录
  • iis5.1怎么新建网站电子商务网站建设与管理实训内容答案
  • 做网站背景步骤知名的vi设计公司
  • 中国室内设计师联盟网站我注册过的网站
  • 如何给自己的公司做网站网站设计电商首页
  • 成都网站开发培训综合网站开发实训总结
  • 个人备案网站名称文学网站开发
  • 花钱做推广广告哪个网站好泗洪网页设计
  • 望牛墩镇网站建设公司网站建设企业熊掌号
  • 做网站一般会出现的问题静态网站的好处就是安全性好从而
  • 做海鲜代理在什么网站建筑网片钢筋网生产厂家
  • 万网网站建设方案书导购网站开发要多少钱
  • 做网站muse好还是DW好用wordpress %link
  • html5门户网站模版做投标需要知道什么网站