嵌入式面经 c语言相关

3.内存管理&编程题(20道) 

3.1gcc编译的C语言程序占用的内存分为哪几个部分?

栈区(stack)

存放函数的参数、局部变量。

堆区(heap)

提供程序员动态申请的内存空间。

全局(静态)区(static)

存放全局变量和静态变量,初始化不为0的全局变量和静态变量、const型常量在一块区域(.data段),未初始化的、初始化为0的全局变量和静态变量在相邻的另一块区域(.bss段)。

程序代码区

存放函数体的二进制代码和字符串常量。


3.2小端:一个数据的低位字节数据存储在低地址
   大端:一个数据的高位字节数据存储在低地址
   例如:int a=0x12345678;  //a首地址为0x200,大端存储格式如下:

如何判读一个系统的大小端存储模式?

(1)方法一:int *强制类型转换为char *,用"[]"解引用 

void checkCpuMode(void)  
{  
    int c = 0x12345678;  
    char *p = (char *)&c;  
    if(p[0] == 0x12)  
        printf("Big endian.
");  
    else if(p[0] == 0x78)  
        printf("Little endian.
");  
    else  
        printf("Uncertain.
");  
}  

(2)方法二:int *强制类型转换为char *,用"*"解引用 

void checkCpuMode(void)  
{  
    int c = 0x12345678;  
    char *p = (char *)&c;  
    if(*p == 0x12)  
        printf("Big endian.
");  
    else if(*p == 0x78)  
        printf("Little endian.
");  
    else  
        printf("Uncertain.
");  
}  

(3)方法三:包含short跟char的共用体 

void checkCpuMode(void)  
{  
    union Data  
    {  
        short a;  
        char b[sizeof(short)];  
    }data;  
    data.a = 0x1234;  
  
    if(data.b[0] == 0x12)  
        printf("Big endian.
");  
    else if(data.b[0] == 0x34)  
        printf("Little endian.
");  
    else  
        printf("uncertain.
");  
}  


3.3全局变量和局部变量的区别?

(1)全局变量储存在静态区,进入main函数之前就被创建,生命周期为整个源程序。 

(2)局部变量在栈中分配,在函数被调用时才被创建,在函数退出时销毁,生命周期为函数内。 


3.4以下程序中,主函数能否成功申请到内存空间?

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

答案:不能。 

解读:getmemory(str)没能改变str的值,因为传递给子函数的只是str的复制值NULL,main函数中的str一直都是 NULL。正确的getmemory()如下: 

①传递的是二重指针,即str的指针
void getmemory(char **p)   
{  
    *p = (char *)malloc(100);  
    strcpy(*p, "hello world");  
}  
②传递的是指针别名,即str的别名,C++中
void getmemory(char * &p)   
{  
    p = (char *)malloc(100);  
    strcpy(p, "hello world");  
}  


以上内容摘自专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:                  



嵌入式公司推荐:   华为           小米             OPPO       、VIVO、     CVTE             大疆       、insta360影石、美的     TCL  小米    经纬恒润     、小鹏、 图森未来       百度    滴滴、蔚来、理想、     联发科、 紫光展锐    、全志、   寒武纪    晶晨半导体   、汇顶、华为     中兴    浪潮    TP-LINK、    讯飞、商汤、海康威视    、浙江   大华    、360。qi
#嵌入式面试##嵌入式##嵌入式软开##单片机##c语言#
全部评论

相关推荐

11-28 06:30
门头沟学院 Java
C++:&nbsp;1.虚函数实现原理2.虚表是一个类有一个还是一个对象有一个?(每个类有一个虚函数表,每个对象有一个虚函数表指针)3.查询虚表的时间复杂度是多少?4.`std::move()`&nbsp;原理,涉及移动吗5.假设有一个&nbsp;1KB&nbsp;的大对象,`move`&nbsp;能节省拷贝吗6.智能指针原理7.new&nbsp;和&nbsp;malloc&nbsp;有什么区别呢8.用&nbsp;`new`&nbsp;生成的对象,可以用&nbsp;`free`&nbsp;释放吗?那如果是基础类型呢?9.用&nbsp;`new`&nbsp;创建数组时,释放的时候需要写出元素个数吗10.`std::map`&nbsp;和&nbsp;B+&nbsp;tree&nbsp;有什么区别呢11.红黑树和&nbsp;B+&nbsp;Tree&nbsp;在性能、内存空间占用上的对比12.为什么数据库选择&nbsp;B+&nbsp;Tree&nbsp;而不是红黑树13.在&nbsp;STL&nbsp;里,内存池是怎么实现的,有怎样的结构?14.执行&nbsp;`vector&lt;int&gt;&nbsp;v(4,&nbsp;100)`&nbsp;会发生什么,在栈上还是堆上分配?15.那如果是&nbsp;`new&nbsp;vector&lt;int&gt;(4,100)`&nbsp;呢16.如何拿到类中私有成员变量的值?17.有一个二维数组里面都有值,想要给每个数都加&nbsp;100,行遍历和列遍历有什么区别?网络:1.在浏览器中访问一个&nbsp;http&nbsp;服务器,这里面会经过哪些协议?2.为什么不直接用&nbsp;tcp&nbsp;协议,还需要用&nbsp;http&nbsp;协议?算法:1.`1,2,3,4,...,n`&nbsp;构造二叉树2.合并两个有序数组&nbsp;a&nbsp;和&nbsp;b,两个数组可能是升序/降序(4&nbsp;种情况),合并后的结果放在&nbsp;a&nbsp;中,合并后的顺序按照&nbsp;a&nbsp;的顺序来
点赞 评论 收藏
分享
秋招接近尾声,鼠鼠目前收到两个offer,还有一些池子和流程,就offer选择非常纠结,希望各位佬们为我指点迷津。南京小米汽车的安卓开发&nbsp;n*15,作息应该是995这个区间内。北京滴滴出行技术网约车的后端开发&nbsp;(n+7)*15,作息是10&nbsp;9&nbsp;5这个区间。鼠鼠我是江苏人,女朋友在上海某大厂工作,薪资是n+10,两个人谈了一年多了,感情也很稳定。纠结的点在于如果去小米,那安卓客户端未来的发展前景不明朗,而且小米员工稍显性价比(虽然工资不是大问题,鼠鼠本身也不是特别需要钱的,所以工资差不多就行)好处是离家离对象都很近;如果去滴滴,搞后端确实更磨炼技术,发展前景也更广阔,未来跳板去其他地方应该也更容易,坏处就是离得远,太折磨了。此外还有其他打一些池子和流程,广州cvte和合肥科大讯飞的池子,新凯来的流程中想请牛友们给点建议:小米客户端真的未来寄中寄吗😂;滴滴的话wlb是不是真的,强度方面是不是会好一点。家里人其实想我留在南京,就安顿下来家里给买房子啥的😂,我以后的长期规划也是想离家近一些定居,但是滴滴实在太诱人了,薪资高一些还是搞后端,其实鼠鼠还是有点技术追求,就挺想搞后端的。此外新凯来和科大讯飞这俩厂风评如何?不是很了解哎&nbsp;异地实在痛苦,不知牛友们有无高见,谢谢!
牛客28967172...:提升自己价值永远是硬道理。 如果是为了爱情放弃事业,大概率爱情和事业都会失去,如果是为了事业放弃爱情,以后绝大概率会迎来更好的爱情。 更何况你这都远远算不上放弃爱情,如果你对象真爱你,绝对是想让你以后变得更好,并且坚决反对你牺牲未来而贪图现状。
offer帮选
点赞 评论 收藏
分享
评论
12
62
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务