本文介绍: 3)用static修饰函数:对函数连接方式产生影响,使得函数只在本文件内部有效,对其他文件不可见的(这一点在大工程中很重要很重要,避免很多麻烦,很常见)。解析回答这个问题需要知道malloc作用原理应用程序通过malloc函数可以程序虚拟空间申请一块虚拟地址空间,与物理内存没有直接关系,得到的是在虚拟地址空间中的地址,之后程序运行所提供的物理内存是由操作系统完成的。若str1>str2,则返回正数。做嵌入式,对于内存是十分在意的,因为可用内存有限,所以嵌入式笔试面试题目,内存题目高频

1. newmalloc

嵌入式,对于内存是十分在意的,因为可用内存有限,所以嵌入式笔试试题目,内存的题目高频

1)mallocfreec++/c语言库函数,需要头文件支持stdlib.hnewdelete是C++的关键字,不需要头文件,需要编译器支持

2)使用new操作符申请内存分配时,无需指定内存块的大小编译器会根据类型信息自行计算。而malloc则需要显式支持所需内存的大小

3)new操作符内存分配成功时,返回的是对象类型指针类型严格对象匹配,无需进行类型转换,故new是符合类型安全性操作符。而malloc内存分配成功则是返回void*,需要通过强制类型转换void*指针转换成我们需要的类型。

4)new内存分配失败时,会抛出bad_alloc异常。malloc分配内存失败返回NULL。

2、在1G内存的计算机中能否malloc(1.2G)?为什么?(2021浙江大华二面问题

答:是有可能申请1.2G的内存的。

解析回答这个问题前需要知道malloc作用原理应用程序通过malloc函数可以程序虚拟空间申请一块虚拟地址空间,与物理内存没有直接关系,得到的是在虚拟地址空间中的地址,之后程序运行所提供的物理内存是由操作系统完成的。

3 、extern”C” 的作用

我们可以在C++中使用C的已编译好的函数模块,这时候就需要用到extern”C”。也就是extern“C” 都是在c++文件添加的。

extern链接阶段起作用(四大阶段预处理编译汇编链接)。

4、strcatstrncatstrcmpstrcpy哪些函数会导致内存溢出如何改进?(2021浙江大华二面问题

strcpy函数会导致内存溢出

strcpy拷贝函数不安全,他不做任何的检查措施,也不判断拷贝大小,不判断目的地址内存是否够用。

char *strcpychar *strDestconst char *strSrc

strncpy拷贝函数,虽然计算复制大小,但是也不安全,没有检查目标边界

strncpy(destsrcsizeof(dest)); 

strncpy_s是安全

strcmp(str1,str2),是比较函数,若str1=str2,则返回零;若str1<str2,则返回负数;若str1&gt;str2,则返回正数。(比较字符串

strncat()主要功能是在字符串的结尾追加n个字符

char * strncat(char *destconst char *srcsize_n);

strcat()函数主要用来两个char类型连接例如

chad[20]="Golden";
char s[20]="View";
strcat(d,s);
//打印d
printf("%s",d);

输出 d 为 GoldenView (中间无空格

延伸:

memcpy拷贝函数,它与strcpy的区别就是memcpy可以拷贝任意类型的数据,strcpy只能拷贝字符串类型。

memcpy 函数用于资源内存(src所指向的内存区域拷贝目标内存(dest所指向的内存区域);有一个size变量控制拷贝的字节数;

函数原型

void *memcpy(void *destvoid *src, unsigned int count);

5 、static用法定义用途)(必考)

1)用static修饰局部变量:使其变为静态存储方式(静态数据区),那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中。

2)用static修饰全局变量:使其只在本文件内部有效,而其他文件不可连接引用该变量。

3)用static修饰函数:对函数的连接方式产生影响,使得函数只在本文件内部有效,对其他文件不可见的(这一点在大工程中很重要很重要,避免很多麻烦,很常见)。这样的函数又叫作静态函数。使用静态函数的好处是,不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制

6、const用法(定义和用途)(必考)

const主要用来修饰变量、函数形参和类成员函数:

1)用const修饰常量:定义时就初始化,以后不能更改

2)用const修饰形参func(const int a){};该形参在函数里不能改变

3)用const修饰类成员函数:该函数对成员变量只能进行只读操作就是const类成员函数是不能修改成员变量的数值的。

被const修饰的东西都受到强制保护可以预防意外的变动,能提高程序的健壮性。

参考一个大佬回答:

我只要一听到被面试者说:”const意味着常数“,我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着”只读“就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?

用户空间与内核通信方式哪些

原文地址:https://blog.csdn.net/weixin_36139431/article/details/134782340

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45160.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注