- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下功能:
void f(){
char a[]="THIS IS A STR 1";
char b[]="THIS IS A STR 2";
char c[]="THIS IS A STR 3";
char d[]="THIS IS A STR 4";
}
当我正常编译和运行这个程序时,这些字符串在栈上的分配是这样的:
08 00 00 00 04 00 00 00 10 00 00 00 10 00 00 00 ................
10 71 c7 64 fc 7f 00 00 07 a9 90 7b 24 56 00 00 .q.d.......{$V..
54 48 49 53 20 49 53 20 41 20 53 54 52 20 31 00 THIS IS A STR 1.
54 48 49 53 20 49 53 20 41 20 53 54 52 20 32 00 THIS IS A STR 2.
54 48 49 53 20 49 53 20 41 20 53 54 52 20 33 00 THIS IS A STR 3.
54 48 49 53 20 49 53 20 41 20 53 54 52 20 34 00 THIS IS A STR 4.
a0 69 d9 76 c8 7f 00 00 00 dc ad e1 c7 89 e9 11 .i.v............
30 71 c7 64 fc 7f 00 00 37 a9 90 7b 24 56 00 00 0q.d....7..{$V..``
堆栈向较小的内存地址增长(在本例中为“向上”),因此这些字符串的存储顺序对我来说似乎是相反的。
而当我使用 -fno-stack-protector 编译和运行时,我得到了“正确”的顺序。
00 00 00 2e 10 00 00 00 08 00 00 00 05 00 00 00 ................
80 20 05 0f ff 7f 00 00 88 58 bb 32 96 55 00 00 . .......X.2.U..
54 48 49 53 20 49 53 20 41 20 53 54 52 20 34 00 THIS IS A STR 4.
54 48 49 53 20 49 53 20 41 20 53 54 52 20 33 00 THIS IS A STR 3.
54 48 49 53 20 49 53 20 41 20 53 54 52 20 32 00 THIS IS A STR 2.
54 48 49 53 20 49 53 20 41 20 53 54 52 20 31 00 THIS IS A STR 1.
a0 20 05 0f ff 7f 00 00 a4 58 bb 32 96 55 00 00 . .......X.2.U..
88 21 05 0f ff 7f 00 00 00 00 00 00 02 00 00 00 .!..............
我的印象是所有堆栈保护器都放在堆栈金丝雀中,那么为什么它会像这样重新排序内存分配方式?
最佳答案
堆栈“增长”的顺序指的是嵌套函数或 block 时不同堆栈帧的位置。它也会朝这个方向增长,需要在堆栈上动态分配临时对象。
然而,堆栈帧中变量的位置是完全任意的;没有什么要求它与变量声明的顺序相同。编译器可能对堆栈帧中的变量重新排序的原因有很多;例如,对齐要求较小的变量可能会一起移动,以尽量减少填充。
当您使用 -fno-stack-protector
时这些字符串被反转的事实可能只是通过优化器的不同代码路径的副作用。我怀疑这有什么具体原因,但这应该无关紧要。
关于c - 为什么 -fno-stack-protector 会颠倒这些字符串的存储顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55977989/
我正在尝试将我的本地功能分支 rebase 到名为“集成”的远程分支上。 所以我做了- git checkout feature git rebase integration 但在我的冲突解决编辑器中
我想使用模板来反转 XML 的不同序列; 例如 :
我正在尝试使用 Django 1.8 构建我的博客,但是我不知道如何订购这些博客。看图 我想在底部显示“最早”,在顶部显示“最新”。这是我的 index.html {% extends 'layout
我正在使用 socket.io 并向客户端发送一条消息,其中包含应附加到 div 的数据: socket.on('new data', function(data){ $('#containe
如果我遗漏了明显的内容,我深表歉意...... 我正在使用 rgl 绘制 3d 曲面。我的代码是 library(rgl) dem1 = read.table(file="file.txt",skip
如何使用纯 CSS 反转 div 子元素的顺序? 例如: 我要 A B C D 显示为: D C B A 我在 JSfiddle 上创建了一个演示: http://
是否反转中的属性 到 削弱或以任何方式影响搜索引擎索引页面的能力? 谢谢:) 最佳答案 我们不可能知道。搜索引擎可能有错误。 但从 HTML 规范的角度来看,不,属性顺序不影响含义。 关于html
我正在使用 CABasicAnimation 绘制我在数组中使用 CAShapeLayer 的所有 UIBezierPaths CAShapeLayer *shapeLayer = [CAShapeL
我在我的 iPhone 应用程序中使用 core plot 1.0。一切正常,图表绘制完美,但我面临一个奇怪的问题,即图表页面 (CPTPGraphHostingView) 上的所有控件都被镜像。 即
我是一名优秀的程序员,十分优秀!