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

男朋友说是做竞彩网站维护的wordpress付款查看

男朋友说是做竞彩网站维护的,wordpress付款查看,营销管理咨询,上杭网页制作C语言动态内存经典笔试题分析 文章目录 C语言动态内存经典笔试题分析1. 题目一2. 题目二3. 题目三4. 题目四 1. 题目一 void GetMemory(char *p){p (char *)malloc(100);} void Test(void){char *str NULL;GetMemory(str);strcpy(str, hello world);printf(str)…C语言动态内存经典笔试题分析 文章目录 C语言动态内存经典笔试题分析1. 题目一2. 题目二3. 题目三4. 题目四 1. 题目一 void GetMemory(char *p){p (char *)malloc(100);} void Test(void){char *str NULL;GetMemory(str);strcpy(str, hello world);printf(str);}运行Test函数会有什么结果 代码运行时会崩溃 上述代码中出现的问题 malloc开辟的空间没有释放内存泄漏代码会崩溃即使GetMemory函数返回str依然为NULLGetMemory函数无法把malloc开辟的100个字节带回来 TIP上述代码中的printf(str);没有错与printf(“abcdef”); printf(“%s”,str);一样都是将数组的首元素地址传给kbdprintf 代码出现的主要问题是GetMemory函数返回str依然为NULL 分析 传给GetMemory函数的只是str中的值并不是str的地址使用为传值调用传值调用形参的改变并不会改变实参形参只是实参的临时拷贝所以str中的值不会改变在使用strcpy时对NULL指针解引用了导致程序崩溃 上述代码的修改 void GetMemory(char** p) {*p (char*)malloc(100); } void Test(void) {char* str NULL;GetMemory(str);strcpy(str, hello);printf(str);free(str);str NULL; }2. 题目二 void GetMemory(char** p, int num) {*p (char*)malloc(num); } void Test(void) {char* str NULL;GetMemory(str, 100);strcpy(str, hello);printf(str); }运行Test函数会有什么结果 正常打印hello 分析 与题目一类似不过这段代码时将str的地址传给了GetMemory函数函数形参使用二级指针存放指针的地址并将开辟好的空间的地址赋值给p也就是str代码并没有明显问题并不会像代码一一样崩溃 只不过这段代码没有释放malloc开辟的空间会导致内存泄漏 上述代码的修改 void GetMemory(char** p, int num) {*p (char*)malloc(num); } void Test(void) {char* str NULL;GetMemory(str, 100);strcpy(str, hello);printf(str);free(str);str NULL; }3. 题目三 char* GetMemory(void) {char p[] hello world;return p; } void Test(void) {char* str NULL;str GetMemory();printf(str); }运行Test函数会有什么结果 代码打印的结果是不确定的 分析 这段代码错就错在返回了局部变量的地址局部变量的生命周期在出作用域就结束了也就是在调用完GetMemory函数之后p就被销毁了还给了操作系统在下面用指针接收了局部变量的地址时这个指针就是野指针代码打印会出不确定的结果 可以简化下这段代码 int* test() {int n 10;return n; } int main() {int* ret test();printf(hello\n);printf(%d, *ret);return 0; }打印出的结果为不确定的 分析 上述代码就是明显返回了局部变量的地址如果没有 printf(“hello\n”);这段的话代码虽然能正常运行但是不代表没错printf(“hello\n”);这段的话破坏了函数的栈帧空间导致打印的值不确定 在运行代码的时候main函数开辟一块空间再为TestTest函数开辟一快空间再为TestGetMemort函数开辟一快空间GetMemort函数中有一个字符数组p并且返回p的地址数组名就是首字符地址调用GetMemort函数结束GetMemort函数被销毁还给了操作系统当在打印数组之前出现了其他代码就会破坏函数的栈帧空间导致打印的值为不确定的 4. 题目四 void Test(void) {char* str (char*)malloc(100);strcpy(str, hello);free(str);if (str ! NULL){strcpy(str, world);printf(str);} }代码运行结果正常打印world 运行结果没错不代表结束没错 分析 在上述代码中使用strcpy将“hello”拷贝到str中然后使用free释放了malloc开辟的空间空间没了但是空间的地址还在str没有置NULL此时str就是野指针对野指针进行访问就是非法访问因为野指针指向的一块不属于它的空间
http://www.dnsts.com.cn/news/198802.html

相关文章:

  • 集团门户网站建设策划网站建设平台 创新模式
  • 外贸大型门户网站建设集团网站设计专业团队
  • 辽宁朝阳网站建设公司深圳招聘网站大全
  • 重庆主页网站建设画图在什么网站上做兼职
  • 做救助流浪动物网站的产生背景天津室内设计学校
  • 旅游网站建设规划书模板下载WordPress的文本编辑器
  • 宿州网站制作公司网站建设实战视频教程
  • 手机网站有哪些类型家用宽带做网站服务器
  • 的网站开发工具有哪些合肥网站seo
  • 织梦做的网站如何修改做问卷调查的网站有哪些
  • 微网站简介营销网站优化推广
  • 网站优秀设计东莞虚拟主机
  • wordpress网站白屏广东省高水平建设专业网站
  • 网站优化排名怎么做类似天书奇谈的网页游戏
  • wordpress网站登录被篡改住房和城乡建设部网站安全月
  • 网站大全官网中恒诚信建设有限公司网站
  • 江西网站建设公司联系方式搭建个人网站赚钱
  • php 网站开发 pdfp2p网站开发公司
  • 国家和住房城乡建设部网站精致的网站
  • 江苏省住房与城乡建设厅网站网站建设摊销年限
  • 会务网站建设网站开发失败原因分析
  • 西安网站设计公司电脑网络
  • 黑群晖做网站wordpress调取文章列表
  • 网站开发就业怎么样河南程序开发公司
  • 中国十大网站开发公司杭州网站建设设计公司
  • 新浪微博网站建设邯郸最近发生的重大新闻
  • 广州市天河区建设局网站沈阳网站建设技术支持
  • 网站建设管理ppt建设工程施工合同示范文本2023最新版
  • 上海自聊自做网站国外主流网站开发技术
  • 如何进行网站优化设计天津seo网络优化师