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

C语言习题~day27

  1.关于下面代码描述不正确的是:

void GetMemory(char *p)
{p = (char *)malloc(100);
}
void Test(void)
{char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);
}

A.上面代码没问题

B.上面代码存在内存泄露

C.上面代码可能会崩溃,即使GetMemory函数返回,str依然为NULL

D.GetMemory函数无法把malloc开辟的100个字节带回来

BCD已经说明了问题。核心问题就是子函数中的p是临时变量,改变它并不会改变主函数中的str。 

2.以下哪个不是动态内存的错误( )

A.free参数为NULL

B.对非动态内存的free释放

C.对动态内存的多次释放

D.对动态内存的越界访问

 这个题目是课本上的知识点

A选项,是对的,free函数传递NULL指针,什么事情都不发生

B,C,D都是错误的

3.关于下面代码描述正确的是( )

char *GetMemory(void)
{char p[] = "hello world";return p;
}
void Test(void)
{char *str = NULL;str = GetMemory();printf(str);
}

 A.printf函数使用有问题

B.程序正常打印hello world

C.GetMemory函数返回的地址无法正常使用

D.程序存在内存泄露

说明:此题考的是“局部变量的指针不能做返回值,因为函数内的空间在函数返回后就会释放调”这一点。只有C说到点子上了。

A:printf函数的使用也是错误的, 如果要打印printf("%s", str); 这个是str指针是正常的情况下, 是可以的。 如果str是非法的, 那也会导致printf错误的

B选项:打印结果其实是不确定的。

D选项: 比较离谱,程序中并没有动态内存分配,所以不存在内存泄漏。

4.给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < n 的 i ,满足下述所有要求:

  • ans[i] == nums[i]
  • ans[i + n] == nums[i]

具体而言,ans 由两个 nums 数组 串联 形成。

返回数组 ans 。

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* getConcatenation(int* nums, int numsSize, int* returnSize) {//定义一个长度为nums数组长度两倍的数组ansint* ans = malloc(2*numsSize * sizeof(int));int i = 0;//遍历nums数组,将下标为x的元素分别赋值给ans数组中下标为x和下标为x+m的元素;for(i=0; i<numsSize; i++) {ans[i] = nums[i];ans[i+numsSize] = nums[i];}//更新数组长度并返回数组*returnSize = 2*numsSize;return ans;
}

5.使用malloc函数模拟开辟一个二维数组

使用malloc函数模拟开辟一个3*5的整型二维数组,开辟好后,使用二维数组的下标访问形式,访问空间。 

#include <stdio.h>int main()
{//开辟int** p = (int**)malloc(3 * sizeof(int*));int i = 0;for (i = 0; i < 3; i++){p[i] = (int*)malloc(5 * sizeof(int));}//使用int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 5; j++){p[i][j] = 5 * i + j;}}for (i = 0; i < 3; i++){for (j = 0; j < 5; j++){printf("%d ", p[i][j]);}printf("\n");}for (i = 0; i < 3; i++){free(p[i]);}free(p);p = NULL;return 0;
}
http://www.dtcms.com/a/532745.html

相关文章:

  • AI之智能体agent与dify的搭建
  • 哪个网站可以接图纸做哪个行业建设网站的需求多
  • 做微信的网站叫什么米WordPress多重筛选功能
  • C++与Python:内存管理与指针的对比
  • 辽宁专业模板网站建设公司网站开发顶岗周记
  • X红书AI发布助手 - 自动化内容创作与发布工具
  • html5网站建设中模板网站改版 seo
  • 第十章:生态篇 - 构建您的第一个插件生态
  • 大模型MCP原理及实践
  • Keil 5 找不到编译器 Missing:Compiler Version 5
  • 24级移动ui
  • 【系统分析师】高分论文:论软件开发方法及应用(数据中心CMDB 系统)
  • 国内免费商用图片的网站搜索引擎优化特点
  • 算法学习 13
  • 仪表盘美学革命:3分钟打造炫酷可交互指标面板
  • GitHub等平台形成的开源文化正在重塑解热
  • 网络传输过程网络编程
  • 做指甲的网站广州天河区怎么样
  • 做网站买什么服务器吗域名空间结构
  • 做电影网站算侵权吗进出口贸易公司取名大全
  • 深度学习中的正则化(Regularization)详解
  • 数据库的安全与保护
  • 网站不同wordpress加分页
  • FFmpeg 基本数据结构 AVCodecContext分析
  • (全闭环)FUNC_FullCloseLoop
  • 出口外贸网站建设铜川网站建设哪家好
  • Gorm(五)钩子实践
  • 我怎么才能找到免费的VR场景以及用于虚拟人的舞蹈动作?
  • 九江企业网站制作苏州园区建设网站首页
  • 怎么将很多ppt批量转换成pptx?图文操作指南