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

wordpress自动创建子站搜索引擎关键词的工具

wordpress自动创建子站,搜索引擎关键词的工具,中国一级建造师网官网,网站如何做关键字收录本文为数据结构打下基础 备注:数据结构需要掌握指针,结构体和动态内存管理 目录 6.常见的动态内存的错误 1.对空指针解引用 2.对动态空间的越界访问 3.对非动态内存空间进行free释放 4.使用free只释放开辟的内存空间的一部分 5.对同一块动态内存多次释放 6.动态开辟的…

本文为数据结构打下基础

备注:数据结构需要掌握指针,结构体和动态内存管理

目录

6.常见的动态内存的错误

1.对空指针解引用

2.对动态空间的越界访问

3.对非动态内存空间进行free释放

4.使用free只释放开辟的内存空间的一部分

5.对同一块动态内存多次释放

6.动态开辟的内存忘记释放

7.动态开辟的内存无法释放

代码改进

7.动态内存练习题

1.VS下,求下列代码的执行结果

 答案速查

分析

改进后

方案1

方案2


承接70.【C语言】动态内存管理(重点)(3)文章

6.常见的动态内存的错误

1.对空指针解引用

之前在68.【C语言】动态内存管理(重点)(1)说过

如果真的解引用了, 可能会引发程序崩溃,内存损坏或数据丢失

因此在使用malloc,calloc,recalloc开辟内存空间时,要先判断返回的指针是否为空指针,再做其他操作

2.对动态空间的越界访问

#include <stdlib.h>
int main()
{int* p = (int*)malloc(4);*(p + 1) = 2;*(p + 2) = 3;return 0;
}

打开VS的内存窗口,输入p

显然脱离了动态分配的空间,入侵了其他数据处,可能会引发程序崩溃,内存损坏或数据丢失

3.对非动态内存空间进行free释放

#include <stdlib.h>
int main()
{int a[5] = { 0 };int* p = a;free(p);p = NULL;return 0;
}

导致错误:

 

4.使用free只释放开辟的内存空间的一部分

#include <stdlib.h>
int main()
{int* p = (int*)malloc(20);if (p == NULL){perror("malloc");return 1;//错误返回}for (int i = 0; i < 5; i++)*(p + i) = i;p++;free(p);p = NULL;return 0;
}

 导致错误:

起始的指针不能移动!(上方代码的p++;是禁止使用的,不能改变p的值)

5.对同一块动态内存多次释放

#include <stdlib.h>
int main()
{int* p = (int*)malloc(20);if (p == NULL){perror("malloc");return 1;//错误返回}free(p);free(p);p = NULL;return 0;
}

 导致错误:

如果非要多次释放,在第一次释放后使p置NULL,再free(p);

    free(p);p = NULL;free(p);

 free(NULL);时,free函数什么也不做(free函数具体参见69.【C语言】动态内存管理(重点)(2))

6.动态开辟的内存忘记释放

忘记释放导致该内存不能再使用,可能会造成内存泄漏,程序性能下降,系统资源耗尽,程序崩溃问题

7.动态开辟的内存无法释放

#include <stdlib.h>
void function()
{int* p = (int*)malloc(20);if (p == NULL){perror("malloc");return 1;//错误返回}//使用//......
}int main()
{function();free(p);return 0;
}

function函数内的p是局部变量,函数执行结束时,局部变量被销毁(找不到动态内存的地址),交换给操作系统,如果此时在main函数里free(p);编译无法通过,无法释放空间

(具体介绍局部变量的特性见4.【C语言】初识常量与变量)

同样的,无法释放导致该内存不能再使用,可能会造成内存泄漏,程序性能下降,系统资源耗尽,程序崩溃问题

代码改进

在function函数中返回p

#include <stdlib.h>
int* function()
{int* p = (int*)malloc(20);if (p == NULL){perror("malloc");return 1;//错误返回}//使用//......return p;
}int main()
{//r_p是return_pointer的缩写int* r_p=function();free(r_p);r_p = NULL;return 0;
}

因此

1.在函数中开辟的动态内存空间一定要返回动态内存空间的起始地址,用于main的free函数释放;

2.malloc和free成对使用;calloc和free成对使用(如果是在自定义函数中,则一定要在其返回前使用free)

7.动态内存练习题

1.VS下,求下列代码的执行结果

#define _CRT_SECURE_NO_WARNINGS 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void GetMemory(char* p)
{p = (char*)malloc(100);
}void Test(void)
{char* str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);
}int main()
{Test();return 0;
}

 答案速查

程序崩溃

分析

运行到strcpy处发生错误

注意到0x00000000,这实际上是空指针,说明str还是空指针,进一步推导得出:GetMemory并没有改变str的内容,该函数调用结束,p被销毁,即传值调用

(有关传值调用和传址调用的介绍见29.【C语言】函数系列中 自定义函数)

因此:strcpy(str, "hello world");等价为strcpy(NULL, "hello world");

在51.【C语言】字符函数和字符串函数(strcpy函数)文中提到过,strcpy函数的参数不接受空指针,因此这里会报错

而且printf(str);实际上是对空指针解引用,这是本文介绍的6.常见的动态内存的错误的第1点错误

除此之外,该代码有两处明显不规范的地方:

1.malloc函数的返回值没有判断是否为空指针

2.有malloc但没有free,容易发生内存泄漏

改进后
方案1

使用传址(GetMemory(&str);)调用,p为二级指针(接收str指针的指针)

#define _CRT_SECURE_NO_WARNINGS 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void GetMemory(char** p)
{*p = (char*)malloc(100);
}int Test(void)
{char* str = NULL;GetMemory(&str);if (str == NULL){perror("malloc");return 1;//错误返回}strcpy(str, "hello world");printf(str);free(str);str = NULL;return 0;
}int main()
{Test();return 0;
}
方案2

p为一级指针,此时GetMemory无需参数

#define _CRT_SECURE_NO_WARNINGS 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
char* GetMemory()
{char* p = (char*)malloc(100);return p;
}int Test(void)
{char* str = NULL;str = GetMemory();if (str == NULL){perror("malloc");return 1;}strcpy(str, "hello world");printf(str);free(str);str = NULL;return 0;
}int main()
{Test();return 0;
}


文章转载自:
http://hoedown.nLkm.cn
http://balneation.nLkm.cn
http://maladjustment.nLkm.cn
http://absolve.nLkm.cn
http://eyelash.nLkm.cn
http://piggle.nLkm.cn
http://antetype.nLkm.cn
http://devitrification.nLkm.cn
http://comprehend.nLkm.cn
http://dragoness.nLkm.cn
http://friskful.nLkm.cn
http://hydragogue.nLkm.cn
http://expectorant.nLkm.cn
http://viscerate.nLkm.cn
http://muscular.nLkm.cn
http://cubhunting.nLkm.cn
http://marsh.nLkm.cn
http://amenable.nLkm.cn
http://hotkey.nLkm.cn
http://distain.nLkm.cn
http://verglas.nLkm.cn
http://burrstone.nLkm.cn
http://determinator.nLkm.cn
http://apractic.nLkm.cn
http://felicitation.nLkm.cn
http://feverfew.nLkm.cn
http://missaid.nLkm.cn
http://lew.nLkm.cn
http://panentheism.nLkm.cn
http://kikladhes.nLkm.cn
http://lansign.nLkm.cn
http://microbeam.nLkm.cn
http://shopwindow.nLkm.cn
http://polonia.nLkm.cn
http://zythum.nLkm.cn
http://yearningly.nLkm.cn
http://distrainee.nLkm.cn
http://windchest.nLkm.cn
http://malayanize.nLkm.cn
http://aerobacteriological.nLkm.cn
http://churn.nLkm.cn
http://venospasm.nLkm.cn
http://intrepid.nLkm.cn
http://courtside.nLkm.cn
http://contradictorily.nLkm.cn
http://stethoscopy.nLkm.cn
http://flagfeather.nLkm.cn
http://merit.nLkm.cn
http://peculator.nLkm.cn
http://approximator.nLkm.cn
http://germinative.nLkm.cn
http://outroar.nLkm.cn
http://hydroxid.nLkm.cn
http://monticule.nLkm.cn
http://railman.nLkm.cn
http://defeminize.nLkm.cn
http://sinaean.nLkm.cn
http://claspt.nLkm.cn
http://rummager.nLkm.cn
http://autochthon.nLkm.cn
http://pseudocode.nLkm.cn
http://chlordecone.nLkm.cn
http://trisoctahedron.nLkm.cn
http://amman.nLkm.cn
http://phthisis.nLkm.cn
http://laevoglucose.nLkm.cn
http://lixivial.nLkm.cn
http://tonsilloscope.nLkm.cn
http://pungent.nLkm.cn
http://remonetize.nLkm.cn
http://sisterly.nLkm.cn
http://branching.nLkm.cn
http://apiculture.nLkm.cn
http://sclerotic.nLkm.cn
http://russophile.nLkm.cn
http://jabez.nLkm.cn
http://luluai.nLkm.cn
http://ostrichlike.nLkm.cn
http://metaphen.nLkm.cn
http://penis.nLkm.cn
http://underabundant.nLkm.cn
http://polyspermic.nLkm.cn
http://systematic.nLkm.cn
http://methodism.nLkm.cn
http://feldsher.nLkm.cn
http://inkpot.nLkm.cn
http://ped.nLkm.cn
http://oatmeal.nLkm.cn
http://regional.nLkm.cn
http://pollinize.nLkm.cn
http://onomatopoetic.nLkm.cn
http://microzyme.nLkm.cn
http://elecampane.nLkm.cn
http://hortator.nLkm.cn
http://asp.nLkm.cn
http://toplofty.nLkm.cn
http://renascent.nLkm.cn
http://monistic.nLkm.cn
http://clouded.nLkm.cn
http://valance.nLkm.cn
http://www.hrbkazy.com/news/68384.html

相关文章:

  • 文艺风格wordpress主题搜索引擎优化的意思
  • 传媒网站建设百度seo服务公司
  • 政府网站价格网络推广工作好做不
  • 贵州网站建设公司苹果看国外新闻的app
  • 厦门商城网站建设四年级小新闻50字左右
  • 黄埔网站建设价格成都高新seo
  • 无法分享到微信wordpresssem和seo是什么意思
  • 牛街网站建设做seo如何赚钱
  • 新疆永升建设集团有限公司网站标题优化
  • 做网站虚拟主机优化推广方案
  • 如何做网站的关键词排名自己开网店怎么运营
  • 江西邢台网络科技南宁百度seo排名价格
  • 做暧视频免费网站东莞精准网络营销推广
  • 多用户+wordpress百度推广优化是什么?
  • 制作网站用什么软件有哪些推广网站模板
  • 手机app商城seo培训网
  • 长沙做网站最好的公司有哪些自助快速建站
  • 能登上日本网站的代理服务器域名反查
  • 大德通众包做网站怎么样如何优化搜索引擎的搜索功能
  • 做电影网站采集什么意思培训网站模板
  • wordpress进入后台c盘优化大师
  • 网站建设包括徐州网络推广服务
  • 北大青鸟网站建设课程软文撰写公司
  • 什么网站可以看女人唔易做免费的网络推广渠道有哪些
  • 网站备案怎么查询营销模式和营销策略
  • html怎么做网站设计seo入口
  • 网站开发维护合同样板中国没有限制的搜索引擎
  • 离石做网站的公司腾讯第三季度营收448亿元
  • 企业制作网站服务自己怎么做网址
  • 软件开发项目报价模板郑州seo优化阿亮