stack相关内容
我在此演示文稿中阅读了 http://golang.org/doc/ExpressivenessOfGo.pdf 第42页: 安全 - 没有堆栈溢出 这怎么可能?和/或Go如何工作以避免这种情况? 解决方案 这是一个称为“分段堆栈”的功能:每个goroutine都有自己的堆栈,在堆上分配。 在最简单的情况下,编程语言实现为每个进程/地址空间使用一个堆栈,通常使用称为
..
我在星期二进行了一次考试,我注意到,这个问题是我的老师在他的文章中提出的很多问题。 起初我非常肯定,正确的答案必须是“无”,因为全局变量存储在数据存储器中,但是我发现这个本书来自Robert Lafore,名为“面向对象的C ++编程”,它明确指出,根据C ++标准,全局变量存储在堆中。现在我很困惑,不能真正弄清楚问题的正确答案。 为什么全局变量会存储在堆上?我错过了什么? 在此
..
我正在ggplot2中绘制一个堆栈barplot。我的数据集就像是, var1 var2 var3 value treatment1 group_1 C8.0 0.010056478 treatment2 group_1 C8 .0 0.009382918 treatment3 group_2 C8.0 0.003014983 treatment4 group_2 C8.0
..
这是我的代码: 封装数据结构; import java.util.Iterator; public class Stack { private class Node { T data; 下一个节点; } private int size; 私有节点头; private Node newNode(T data){ Node new_node
..
你如何在运行时实例化一个泛型而不是在编译时。没有使用新的例子。 解决方案 如果不使用 new ,则无法执行此操作。您可以在任何声明部分执行该操作,但是该通用部分仅在该声明部分的范围内存在。 例如(不是编译好的ada-like伪代码): get(length) declare package stack is new stack_generic(max_stack_siz
..
我使用命令 rails new qbc --database = mysql 创建了一个全新的rails项目。它创建的所有文件都很完美,但在软件包中 安装时出错了。 $ bundle install 提取来自https://rubygems.org / gem元数据的元数据/ ........... 从https://rubygems.org/ .. 获取gem元数据不幸的是,
..
如果我看到 / proc /
,那么有人可以告诉我这两种堆栈有什么不同。 pid> / map 和 proc / pid / task / 我看到了相同的地图。有没有一种方法可以看到属于线程的堆栈(我的意思不是堆栈的进程线程),或者是否有任何gdb命令来查找线程特定的堆栈。 感谢, Kapil 解决方案 有没有办法可以看到堆栈属于线程独占 没有这样的事情
..
一个简单的例子说明了我的问题: // test.c #include int foo1(int i){ i = i * 2; 返回i; } void foo2(int i){ printf(“来自foo的问候!i =%i”,i); } int main(){ int i = 7; foo1(i); foo2(i); 返回0; }
..
我试图找出存储在GDB堆栈某个地方的东西。我有一个声明: cmpl $ 0x176,-0x10(%ebp) 在这个函数中,我将0x176与-0x10(%ebp)进行比较,我想知道是否有办法查看存储在 - 0x10(%ebp)。 解决方案 我想知道是否有办法看到什么是存储在-0x10(%ebp)。 假设您已经使用调试信息编译, info local
..
(gdb)bt #0 0x00002b36465a5d4c在AY16_Loop_M16中(有时) )from /opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_mc.so #1 0x00000000000021da in ?? () #2 0x00000000000021da在? () #3 0xbf3e9dec2f04aeff在?? () #4 0xbf4
..
现在我一直在使用GDB反汇编一个二进制文件,并检查出不同的寄存器和其他内容。是否有简单的命令来检查堆栈中的所有内容?这可以限制在一个函数中的所有内容吗? 解决方案 对于当前的堆栈帧: 信息框架列出有关框架的一般信息(其中内容始于内存等)。 info locals 列出存储在框架中的局部变量 ul>
..
我用C编程语言编写程序,并使用objdump将可执行文件转换为asm文件。我不知道gcc如何确定函数将使用的堆栈大小? int a() { int temp [1024 * 1024]; temp [0] = 1; return temp [0]; } 这只是为了解释问题,忽略它是天真的。 gcc是否会为函数a分配真正的1024 * 1024字节空间?
..
我想知道GNU编译器编译过程中 -mpreferred-stack-boundary 选项的用处。我查过了文档,但是我的解释没有了。有人可以解释它。 解决方案 我想知道使用-mpreferred-stack GNU调试器中编译期间的边界选项。 该选项对调试器没有任何作用。 它会影响二进制代码。默认情况下,GCC会安排一些东西,以便每个函数在进入时立即使其堆栈指针在16字节边
..
我一直在阅读“The Shellcoders Handbook”,并一直在提及这个链接来练习堆栈溢出。但似乎Linux内核开发人员已经使内核非常安全。这是我的问题。 1)此代码 void函数(int a,int b,int c){ char buffer1 [8]; char buffer2 [10]; int * ret; ret = buffer1 + 6;
..
任何避免将 pushad / popad 指令正文复制粘贴到我的代码中的方法? -Wall -m32 )抱怨说, __ asm __(“pushad;”); 错误:没有这样的指令:`pushad' __ asm __(“popad;”); 错误:没有这样的指令:`popad' 解决方案 GCC使用AT /
..
我在2007年的MacBook上运行32位Ubuntu 11.04,并开始学习缓冲区溢出漏洞。我试图从书中运行示例程序,但是Ubuntu的安全措施使我无法成功执行缓冲区溢出。这是我试图运行的代码: #include #include #include char shellcode [] = “\x31\xc0\x
..
我使用基于GCC 4.6.1的Windows 64位目标的MinGW64版本。我正在玩新的英特尔AVX指令。我的命令行参数是 -march = corei7-avx -mtune = corei7-avx -mavx 。 但是在堆栈中分配局部变量时,我开始遇到分段错误错误。 GCC使用对齐的移动 VMOVAPS 和 VMOVAPD 移动 __ m256 和 __ m256d 左右,这些指令需
..
为了更好地掌握调用约定以及堆栈是如何处理的,我玩了一段时间,但我无法弄清楚为什么在设置堆栈时主分配三个额外的双字(
..
我读了很多关于垃圾收集的文章,几乎所有文章都讲述了堆内存。所以我的问题是“垃圾回收收集堆栈内存或堆内存或两者兼而有之”。 解决方案 它收集堆内存。通常,当执行路径到达作用域的末尾时,堆栈内存会自动收集 。例如: void fun() { int n; //在堆栈中作为激活记录的一部分保留 ... } //将堆栈指针返回到它进入作用域之前的位置 事实上,在像C
..
我最近阅读了关于垃圾回收的小部分内容(大部分是用Java写的),有一个问题仍然没有答案:JVM(或者一般的运行时系统)如何跟踪当前的活动对象? 我知道那里的对象是当前在堆栈中的对象,所以所有的局部变量或函数参数都是ARE对象。这个问题的解决方法是,无论何时运行时系统检查堆栈中当前是什么,它将如何区分参考变量和简单的int?它不可以吗? 因此,必须有某种机制允许运行时建立初始活动对象列表
..