C语言刷题(25)

1、关于下面代码描述正确的是( )

cpp 复制代码
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选项: 比较离谱,程序中并没有动态内存分配,所以不存在内存泄漏。

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

A.free参数为NULL

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

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

D.对动态内存的越界访问
答案解析:

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

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

B,C,D都是错误的

3、关于下面代码描述不正确的是:

cpp 复制代码
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。

4、动态申请的内存在内存的那个区域?( )

A.栈区

B.堆区

C.静态区

D.文字常量区
答案解析:

基本概念。动态内存分配都是在堆上分配的。

5、关于动态内存相关函数说法错误的是:( )

A.malloc函数和calloc函数的功能是相似的,都是申请一块连续的空间。

B.malloc函数申请的空间不初始化,calloc函数申请的空间会被初始化为0

C.realloc函数可以调整动态申请内存的大小,可大可小

D.free函数不可以释放realloc调整后的空间
答案解析:

realloc在操作过程中是释放旧空间分配并返回新空间,所以返回的新空间也是需要释放的,故选D。AB是malloc和calloc的区别。C是realloc的基础功能。

5、关于动态内存函数的说法错误的是:( )

A.malloc函数向内存申请一块连续的空间,并返回起始地址

B.malloc申请空间失败,返回NULL指针

C.malloc可以向内存申请0字节的空间

D.malloc申请的内存空间,不进行释放也不会对程序有影响
答案解析:

说明:不释放会产生内存泄漏,小型程序可以不关注,但是在中大型程序上影响极其深刻。故选D。AB是函数的基本功能,C选项比较特殊,malloc(0)是允许的,也会返回一个指针,只是没有空间所以不可使用而已。

相关推荐
取名真是2 分钟前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考18 分钟前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
FRing0322 分钟前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2
正在走向自律1 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
Fatbobman(东坡肘子)1 小时前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
开发语言·人工智能·redis·ios·swiftui·iphone·swift
揽星河..2 小时前
【C语言】底层程序设计
c语言·开发语言
JavaPub-rodert2 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
沫璃染墨2 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
nm_zfyjt2 小时前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
海的透彻3 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言