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

湖北网站设计制作价格桦甸市城乡建设局网站

湖北网站设计制作价格,桦甸市城乡建设局网站,手机做网站服务器吗,河池网站建设服务内存分配 1. 引入 int nums[10] {0}; //对int len 10; int nums[len] {0}; //错是因为系统的内存分配原则导致的2. 概述 在程序运行时#xff0c;系统为了 更好的管理进程中的内存#xff0c;所以有了 内存分配机制。 分配原则#xff1a; 2.1 静态分配 静态分配原…内存分配 1. 引入 int nums[10] {0}; //对int len 10; int nums[len] {0}; //错是因为系统的内存分配原则导致的2. 概述 在程序运行时系统为了 更好的管理进程中的内存所以有了 内存分配机制。 分配原则 2.1 静态分配 静态分配原则 特点 1、在程序编译过程中按事先规定的大小 分配内存空间的分配方式 2、必须事先知道所需空间的大小 3、分配在 栈区或全局变量区一般 以数组的形式 4、按计划分配。 2.2 动态分配 特点 1、在程序运行过程中根据需要大小自由分配所需空间 2、按需分配 3、分配在堆区一般 使用特定的函数进行分配。 案例 需求:1、班级有15个学员,定义数组记录学员成绩double score[15] {0};2、记录学员成绩- 输入学员数量- 在堆区申请- 扩展- 释放注意 在c语言中提供了一系列动态分配内存的函数 这些函数大部分都在stdlib.h头文件中声明free 释放 malloc 申请空间,默认值随机 calloc 申请空间,默认值为0 realloc 扩展空间string.h中提供的函数 memset 将malloc中的随机数设为03. 动态分配函数 3.1 memset 函数 作用重置 语法 #include string.hvoid *memset(void *s, int c, size_t n);参数:s: 开始的位置c: 重置后的数据n: 重置的数量从s开始, 将n个字节的数据, 设置为c示例 #include stdio.h #include string.h int main(int argc, char const *argv[]) {char str[10] {0};memset(str, a, 10);for (char i 0; i 10; i){printf(%c , str[i]);}printf(\n);// a a a a a a a a a a int nums[5] {1,2,3,4,5};memset(nums, 0, 20);for (int i 0; i 5; i){printf(%d , nums[i]);}printf(\n);//0 0 0 0 0 return 0; }3.2 free 函数 作用释放内存 语法 #include stdlib.hvoid free(void *ptr);参数:ptr: 指针注意 ptr 指向的内存必须是 malloc、 calloc 、relloc 动态申请的内存 3.3 malloc 函数 作用在堆内存中开辟空间 语法 void *malloc(size_t size)参数:size_t: 可以理解为无符号int;size: 开辟空间大小,单位字节。返回值:开辟的空间的地址开辟失败返回NULL注意 在使用malloc时需要 判断是否开辟成功如果多次 malloc 申请的内存第 1 次和第 2 次申请的内存不一定是连续的malloc的返回值在使用中 记得 强制类型转换 因为该函数原型返回 void*指针 malloc从堆区申请空间后 空间的内容中的值是随机的与局部变量一样大概率为0可以使用memset函数对空间中的数据进行置0。 示例 #include stdio.h #include stdlib.h #include string.h int main(int argc, char const *argv[]) {//1、申请空间//申请一个可以存储10个int数据的空间int *nums (int *)malloc(10 * sizeof(int));//2、判断是否开辟失败if(nums NULL){printf(内存开辟失败\n);return 0;}//置0memset(nums, 0, 10*sizeof(int));//3、使用空间for (int i 0; i 10; i){printf(请输入第%d个数\n, i1);scanf(%d, nums[i]);}for (int i 0; i 10; i){printf(%d , nums[i]);}printf(\n);//4、释放空间free(nums);return 0; }3.4 calloc 函数 作用在堆内存中开辟空间 语法 void *calloc(size_t nmemb, size_t size);参数:nmemb: 申请的块数size: 每块的大小返回值:开辟的空间的地址开辟失败返回NULLint *p malloc(10 * sizeof(int)); int *p calloc(10, sizeof(int));示例 #include stdio.h #include stdlib.h #include string.h int main(int argc, char const *argv[]) {//1、申请空间//申请一个可以存储10个int数据的空间// int *nums (int *)malloc(10 * sizeof(int));int *nums (int *)calloc(10, sizeof(int));//2、判断是否开辟失败if(nums NULL){printf(内存开辟失败\n);return 0;}//3、使用空间for (int i 0; i 10; i){printf(请输入第%d个数\n, i1);scanf(%d, nums[i]);}for (int i 0; i 10; i){printf(%d , nums[i]);}printf(\n);//4、释放空间free(nums);return 0; }3.5 realloc 函数 作用扩展空间其实是重新申请内存 语法 void *realloc(void *ptr, size_t size);参数:ptr:原指针size:从新开辟的大小,原大小新开的大小返回值:开辟成功返回新地址开辟失败返回NULL注意 新地址不一定等于原地址但是大概率相同 在原先 ptr 指向的内存基础上重新申请内存新的内存的大小为 size 个字节如果原先内存后面有足够大的空间就追加如果后边的内存不够用则 relloc 函数会在堆区找一个 size 个字节大小的内存申请将原先内存中的内容拷贝过来然后释放原先的内存最后返回新内存的地址。 示例 #include stdio.h #include stdlib.h int main(int argc, char const *argv[]) {char * strs (char *)calloc(3, sizeof(char));strs realloc(strs, 2*sizeof(char));for (int i 0; i 5; i){scanf(%s, strs[i]);}for (int i 0; i 5; i){printf(%c , strs[i]);}printf(\n);free(strs);return 0; }4. 内存泄漏 4.1 概念 申请的内存首地址丢了找不了再也没法使用了也没法释放了这块内存就被泄露了。 4.2 记录申请内存的指针变量指向别的地方 int *p (int *)malloc(40); int nums[10] {}; p nums; //p 指向别的地方了 //从此以后再也找不到申请的 40 个字节了。 则动态申请的 40 个字节就被泄露了4.3 在函数中申请空间,使用完毕没有释放 void test() {int *p (int *)malloc(40); } test(); //每调用一次 test 泄露 40 个字节5. 防止多次释放 多次释放示例 int *p (int *)malloc(40); free(p); free(p);//注意多次释放会报错防止多次释放 释放前判断释放后置NULL 示例 int *p (int *)malloc(40); if(p ! NULL) {free(p);p NULL; } if(p ! NULL) {free(p);p NULL; }6. 练习 设计函数接收一个字符串返回这个字符串的逆向内容#include stdio.h #include stdlib.hint my_strlen(char *str) {int len 0;while (*str ! \0){str;len;}return len; }char * my_strrev(char *str) {int len my_strlen(str);char *new_str (char *)calloc((len1), sizeof(char));for (int i 0; i len; i){new_str[i] str[len-i-1];}new_str[len] \0;return new_str; }int main(int argc, char const *argv[]) {char *str helloworld;char *new_str my_strrev(str);printf(%s\n, new_str);if (new_str ! NULL){free(new_str);new_str NULL;}return 0; } // dlrowolleh
http://www.hkea.cn/news/14496529/

相关文章:

  • 京东网站建设框架图wordpress 搬瓦工
  • 十堰网站优化价格怎么开店
  • 基于python的网站开发项目悟空crm永久免费了
  • 怎么用自己电脑做网站服务器做网站域名费一般多少钱
  • asp与php做网站哪个好类似源码之家的网站
  • 用云做网站网站制作费用及后期运营
  • 佛山网站建设培训django做的网站模板
  • 网站模拟效果营销和销售的区别
  • 网站的设计页面插件功能wordpress
  • 广州企业网站找哪里建工网首页
  • 网站设计和建设自考题公司网站建设计划
  • 网站建设CEO微信公众号排版app
  • 厦门网站建设114帮人做任务的网站
  • 潍坊制作网站的公司天元建设集团有限公司租赁公司
  • 如何将自己做的网站变成中文网站建设和微站建设的区别
  • 网站做支付功能服装类电子商务网站建设报告
  • 网站建设合同书-详细版怎么做网页设计稿
  • 建设银行龙卡信用卡在境外网站支付建设营销型网站哪家好
  • 网站备案流程和规则郑州医院排名第一妇科
  • 英语网站 php源码购物网站哪个最好
  • 网站打不开是什么原因plc培训机构哪家最好
  • 电子商务网站建设的盈利模式优酷网站建设有何特点
  • 潍坊网站建设 世纪环球16楼上海到北京的火车
  • 惠州网站建设翻译罗店网站建设
  • 室内装饰网站模板昆明做网站建设的公司排名
  • 大型门户网站建设哪专业亦庄建设局网站
  • 资讯门户网站 dede在阿里巴巴上做网站需要什么
  • AD这个软件做网站用得着吗wordpress如何修改顶部栏
  • 电子商务网站和普通网站的区别网站建设什么代码最简单
  • 网站界面设计起着决定性作用免费主页空间申请网站