腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
为什么
C
中
的
堆栈
变量
不在
寄存器
中
?
c
、
compiler-construction
、
buffer-overflow
、
register-allocation
我对如何在编译器
中
执行缓冲区溢出攻击和
寄存器
分配工作有一个合理
的
理解。 让我困惑
的
是,
为什么
在
C
程序
中
堆栈
上有这么多东西。printf("int: %d, str: %s\n", a, str);} 让我们运行它 > gcc run.
c
> .但是
为什么
int a会出现在
堆栈
上呢?,因为
堆栈
上没有任何东西,代码也少得多。
浏览 21
提问于2021-05-06
得票数 0
4
回答
C
++
中
的
自动
变量
c++
、
memory
、
heap-memory
、
stack-memory
、
automatic-properties
可能重复: 此外,我在中看到,在
堆栈
上分配
的
所有内存在编译时都是已知
的
。是真的吗?这是否意味着
堆栈
上只会发生静态内存分配?此外,请提到链接,参考一个完整
的
解释文本有关内存分配在
C
++。
浏览 2
提问于2011-07-06
得票数 9
回答已采纳
6
回答
为什么
C
中
的
变量
不能使用
寄存器
?
c
、
operating-system
在
C
语言中,如果我们声明了一个
寄存器
变量
,如果
寄存器
不可用,它将被视为一个自动
变量
。 但是,对于每个进程开关,
寄存器
的
内容都被推到
堆栈
上。因此,在执行
C
代码时,
寄存器
不受其他程序
的
使用。那么,
为什么
有时无法为我
的
变量
提供
寄存器
?
浏览 7
提问于2014-07-05
得票数 0
回答已采纳
2
回答
为什么
基本指针值存储在
堆栈
中
?
c++
、
c
、
compilation
从这个站点:,我看到了这个程序栈:{ int yy = b + 3; int sum = xx + yy + zz; } {} 我不明白
为什么
基指针从
堆栈
中提取内存,
浏览 3
提问于2016-03-03
得票数 3
回答已采纳
5
回答
意外地址输出
c
、
pointers
我试图弄清楚地址是如何分配给
堆栈
中
的
变量
的
。&b = %p\n", &b);}&a = 0x7fff6e1acb88但我却得到了: &a = 0
浏览 4
提问于2014-03-07
得票数 6
回答已采纳
1
回答
从双精度
变量
转换为整型
变量
casting
、
integer
、
double
这个程序是我在开发
C
++集成开发环境
中
编写
的
。我还以为它会崩溃呢。但它显示
的
是正确
的
输出。能不能请你解释一下内存是如何分配
的
,here.why是这样工作
的
。
浏览 1
提问于2011-10-22
得票数 1
3
回答
当
堆栈
值
不在
顶部时,如何解析它们?
java
、
memory
、
stack
所以,我们知道Stack是按照LIFO原理工作
的
。例如,我们有以下代码(由Java编写,但我认为语言并不重要):int b = 2;System.out.println(a);它真的快吗?
浏览 1
提问于2017-12-15
得票数 2
回答已采纳
8
回答
如何知道
变量
在
寄存器
中
,还是在
堆栈
中
?
c++
、
cpu-registers
g(x, y, z); } 假设有
寄存器
和
堆栈
的
典型
C
++实现,在调用g()之前将
寄存器
和参数写入
堆栈
,然后从g()内部
的
堆栈
读取参数,然后再读取以恢复
寄存器
,而g()则返回f()。但这是大量不必要
的
读写,特别是在编译器能够为
变量
x、y和z使用
寄存器
的<
浏览 14
提问于2015-08-30
得票数 45
回答已采纳
4
回答
标识地址是否属于堆或
堆栈
或
寄存器
c++
、
c
、
memory-management
、
heap-memory
、
stack-memory
我有一个指向
C
/
C
++
变量
的
指针。有没有可能准确地找出这个
变量
属于内存
的
哪一段?如果是,是如何实现
的
? 注意:我只有这个
变量
的
地址,没有进一步
的
信息,如果
变量
是局部/全局等。
浏览 2
提问于2012-08-06
得票数 7
回答已采纳
3
回答
从函数
c
++返回值
的
幕后
c++
、
function
在
c
++
中
从函数返回值
的
幕后是什么?int a( int b ){ return
c
;在遇到返回语句后,是否将
C
的
值存储在EAX
寄存器
中
,销
浏览 2
提问于2017-09-29
得票数 8
2
回答
所有的计算都在
寄存器
中进行。
为什么
堆栈
不在
这里存储
寄存器
计算
的
结果?
visual-studio
、
assembly
、
visual-c++
、
x86
、
stack-frame
我正在
c
++
中
调试一个简单
的
代码,并查看反汇编。在拆卸过程
中
,所有的计算都在
寄存器
中
完成。然后,返回操作
的
结果。我只看到a和b
变量
被推到
堆栈
上(代码在下面)。我没有看到结果
c
变量
被推到
堆栈
上。但在互联网上,看起来所有
变量
a、b和
c
都应该被推到
堆栈
上。但是在我
的
反汇编
中
,我没有看到结果
变
浏览 1
提问于2019-08-25
得票数 1
回答已采纳
4
回答
如何知道
寄存器
变量
存储在哪里?
c
我知道
寄存器
变量
存储在CPU
寄存器
中
。如何知道
变量
存储在
堆栈
或CPU
寄存器
中
?
浏览 0
提问于2012-12-27
得票数 5
回答已采纳
3
回答
当一个函数被调用时,
堆栈
上有什么?
c++
、
c
、
compiler-construction
、
programming-languages
、
callstack
我只能想象1)参数;2)局部
变量
;1)函数返回地址? 2)函数名?
浏览 1
提问于2011-04-08
得票数 2
1
回答
一个
C
文件
的
局部
变量
没有在栈
中
创建,它
的
GCC编译
的
代码,
c
、
gcc
、
stack
、
bios
、
uefi
我在UEFI
的
EDK2 Bios源码工作。我们在EDK2源代码
中
创建了一个与平台相关
的
新包。我发现我们添加
的
与平台相关
的
代码有一个奇怪
的
问题。当我做源代码级调试时,我注意到
C
函数
中
的
局部
变量
在用GCC编译时并不是在
堆栈
中
创建
的
。 同样
的
UEFI代码,当用visual studio编译时,
C
函数
中
的</e
浏览 2
提问于2017-03-08
得票数 0
4
回答
C
++/
C
-assembly级问题
c++
、
assembly
当在函数(
C
/
C
++)中使用全局
变量
时,它是直接从
寄存器
还是从
堆栈
中
获取? 如果可能的话,请给出装配级别的描述。
浏览 3
提问于2010-12-11
得票数 7
回答已采纳
3
回答
是否可以使用缓冲区溢出覆盖%eax?
exploit
、
buffer-overflow
、
memory
我知道程序栈看起来有点像这样(从高到低):但是在哪里可以找到%eax和其他通用
寄存器
呢?
浏览 3
提问于2014-11-03
得票数 5
回答已采纳
6
回答
return语句将其数据保存在哪里?
c
看,x是定义在add函数内部
的
自动
变量
,正如美国国家标准协会所说,自动
变量
存在,并且只在函数内部存在,但在这里,return语句可以使
变量
a甚至存在于函数外部。它将值存储在哪里?
堆栈
还是堆?
浏览 2
提问于2011-07-20
得票数 2
回答已采纳
1
回答
试图理解
堆栈
帧x86-64
的
内容
assembly
、
x86-64
、
stack-memory
、
stack-frame
我正在研究计算机系统
中
的
练习问题3.34 --一个程序员
的
观点--并试图准确地理解正在发生
的
事情。该问题指出:“考虑一个函数P,它生成名为a0-a7
的
局部值,然后使用这些生成
的
值作为参数调用函数Q。通过pushq %r15通过pushq %rbx
的
指令被推送到
堆栈
中
,以便保存这些值,并最终在过程P返回时在各自
的
寄存器
中
替换它们(因为它们是被调用
的
保存
寄存器
浏览 5
提问于2021-10-18
得票数 2
回答已采纳
1
回答
堆指针
寄存器
?
assembly
、
mips
、
instruction-set
许多ISAs,如MIPS,有一个名为“
堆栈
指针”
的
寄存器
来指示
堆栈
的
顶部。
为什么
不是“堆指针”
寄存器
?堆
的
顶部是否存储在内存
中
?
浏览 2
提问于2016-11-30
得票数 1
回答已采纳
2
回答
为什么
linux内核在使用sysenter/sysexit时不能恢复所有的
寄存器
?
linux
、
x86
、
system-calls
、
calling-convention
、
sysenter
在Linux2.6.11内核
中
,当使用sysenter进行系统调用时,几乎和init 0x80一样,使用save_all来推送内核
堆栈
上
的
所有
寄存器
,但在调用完成后,如果没有设置相关
的
标志,我们会使用setit返回,但不会恢复
堆栈
上保存
的
所有
寄存器
。一些系统调用可能会改变
寄存器
值,
为什么
我们不需要重新读取所有
寄存器
Intel386上
的<
浏览 0
提问于2015-04-21
得票数 0
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
C语言为什么一般不在.h中定义函数或者变量?(精华)
C/C+编程笔记:C语言全局变量,实现多个c文件中公用的方法!
编程教程:C#中的变量定义以及初始化
小白学习C语言编程中必须要掌握的变量与基本数据类型详解
C语音中关于指针的使用,函数,变量等举列子分类说明,嵌入式源码程序分析
热门
标签
更多标签
活动推荐
运营活动
广告
关闭
领券