面试笔试问题总结(二)——堆、栈以及存储问题
2014-08-29 15:41
357 查看
作者:disappearedgod
文章出处:/article/3730203.html
时间:2014-8-29
前言
正文
1.既然说到堆和栈,那我来说一个关于文字常量区的常见问题吧
char s[] = "haha";
char *s = "haha";
从编译到执行期,关于这两个的读取有哪些区别?
栈比堆快,
s[] 存在栈里,*s的那个字符串存在文字常量区. char *s = "haha";这上面的字符串,在编译的时候就确定了.
s[]的读取速度快,这里应该是他们的haha是在桟 跟全局数据区,读取效率 是指通过s获取haha的时间
汇编如下结果:
读s[]的时候,直接放到寄存器cl上了,但是读*s的时候,多了一个步骤,读*s的时候要先读指针,然后根据指针读字符。如果本身就是拿整个字符串来使用,那就得另外讨论了 。读字符的时候,s[]较快。
因为寄存器不够用,所以才会把寄存器里面的数据换到内存里面,这个过程加压栈。栈是方便函数调用和局部变量分配的,栈的作用是就为了把常用的数据换到寄存器里面 。
文章出处:/article/3730203.html
时间:2014-8-29
前言
正文
int a = 9; int b = 10; int *p = new int(1); printf(" %x %x %x",p,&a,&b);
1.既然说到堆和栈,那我来说一个关于文字常量区的常见问题吧
char s[] = "haha";
char *s = "haha";
从编译到执行期,关于这两个的读取有哪些区别?
栈比堆快,
s[] 存在栈里,*s的那个字符串存在文字常量区. char *s = "haha";这上面的字符串,在编译的时候就确定了.
s[]的读取速度快,这里应该是他们的haha是在桟 跟全局数据区,读取效率 是指通过s获取haha的时间
汇编如下结果:
读s[]的时候,直接放到寄存器cl上了,但是读*s的时候,多了一个步骤,读*s的时候要先读指针,然后根据指针读字符。如果本身就是拿整个字符串来使用,那就得另外讨论了 。读字符的时候,s[]较快。
因为寄存器不够用,所以才会把寄存器里面的数据换到内存里面,这个过程加压栈。栈是方便函数调用和局部变量分配的,栈的作用是就为了把常用的数据换到寄存器里面 。
相关文章推荐
- 计算机笔试面试常见问题总结
- 面试笔试问题:大数据量,海量数据 处理方法总结
- Java面试之SpringMVC总结以及在面试中的一些问题.
- 【笔试面试】简单总结笔试和面试中的海量数据问题
- [Java面试六]SpringMVC总结以及在面试中的一些问题.
- 面试笔试问题:大数据量,海量数据 处理方法总结
- [笔试题目] 简单总结笔试和面试中的海量数据问题
- [Java面试七]Mybatis总结以及在面试中的一些问题.
- [Java面试五]Spring总结以及在面试中的一些问题.
- 数据结构与算法分析笔记与总结(java实现)--链表问题面试笔试注意点
- C语言链表在笔试面试中常考问题总结
- 面试笔试问题总结(七)—Linux指令及操作系统相关
- 面试笔试问题总结(三)—网络及其协议
- [Java面试五]Spring总结以及在面试中的一些问题.
- 计算机专业面试笔试问题之大数据量,海量数据 处理方法总结
- C语言链表在笔试面试中常考问题总结
- 面试笔试问题总结(五)—数组、链表、二叉树
- 面试笔试问题总结(六)—数据库
- [Java面试七]Mybatis总结以及在面试中的一些问题.
- [Java面试六]SpringMVC总结以及在面试中的一些问题.