stack相关内容
在这个 C 程序中,数据不会在进程之间共享,即父进程和子进程.孩子有自己的数据,父母有自己的数据,但指针显示两个进程的地址相同.它是如何在后台完成的?fork 会生成相同数据的副本吗?如果是这样,那么我们对两个进程都有相同的指针地址.还是由于为每个进程复制的静态分配的数据,并且每个进程的数据是独立的?我想知道它是如何完成的? #include#include
..
根据 Oracle 的说法,一个 StackOverflowError是: 由于应用程序递归太深而发生堆栈溢出时引发. 我知道什么是递归,通常递归函数,如果没有正确终止,会导致 StackOverflowError.为了检查在抛出 StackOverflowError 之前发生的递归调用的数量,我编写了以下代码: 包错误案例;公共类 StackOverFlowError {静态int
..
如果我有这样的功能: void bla(int size) {而(b){字符 tmp[大小];……}} 在 while 循环的每次迭代中都会释放 tmp,对吗? 如果我写这个函数: void bla(int size) {而(b){char* tmp = alloca(大小);……}} tmp 在作用域结束或函数结束时被释放? 解决方案 它会在函数结束时被释放,但是由于你在循
..
如何在运行时而不是在编译时实例化泛型.不使用 new 的示例. 解决方案 如果不使用 new 就无法做到这一点.您可以在任何声明性部分中执行此操作,但是该泛型仅在该声明性部分的范围内存在. 例如(未编译的类似 ada 的伪代码): 获取(长度)宣布包堆栈是新的 stack_generic (max_stack_size => 长度);开始stack.push();...结尾;--
..
我最近一直在使用 c 并且发现我真的不喜欢处理内存管理,或者至少我认为如果我 malloc 一个指针我必须释放它,即使它是最微不足道的事情.这导致我尽可能多地在堆栈上分配并使用 &得到它的位置.甚至制作单独的 int 和 inptr 变量(我在宏中使用 & 运算符时遇到了一些左值问题). 我还没有找到很多我必须处理在分配数据的地方向上(上方/下方)传递数据的地方.同时,我需要大量的早期回报(
..
当您总是可以在堆栈上分配一个足够大以适应所有用途的固定大小缓冲区时,为什么还要使用 alloca()?这不是一个反问句…… 解决方案 如果缓冲区的大小在运行时变化,或者您只是有时需要它,这可能会很有用:这将比固定使用更少的堆栈空间 -每次调用中的大小缓冲区.特别是如果函数位于堆栈的高位或递归.
..
我想从堆栈中重新加载一个活动. 我使用 startActivity() 来开始新的活动.当我在 Activity D 上时,我想重新加载 Activity A 而不是启动新的 Intent.从 D 调用 A 时我不能使用 startActivity() 因为它会触发启动的 onCreate()一个线程来获取一些数据. 编辑:更新堆栈. 如果我使用 FLAG_ACTIVITY_RE
..
我正在阅读 面向 Web 开发人员的专业 JavaScript 第 3 版. 在第 4 章的总结中可以阅读: 两种类型的值可以存储在 JavaScript 变量中:原始值和引用值.原始值具有以下五种原始数据类型之一:Undefined、Null、Boolean、Number 和 String.原始值和参考值具有以下特点: 原始值具有固定大小,因此存储在堆栈的内存中. 但我可以有不
..
从 mean.io 下载 mean stck zip安装了 npm几分钟后,我得到了一个错误.请看截图.我该怎么办? npm http 200 https://registry.npmjs.org/event-emitter/-/event-emitter-0.2.2.tgz>mean@1.0.0 安装后 C:\ss\D1\google\04\mean\mean-stack>./node_m
..
我的讲师给了我一个任务,让我创建一个程序来使用 Stacks 将表达式转换和中缀为后缀.我已经制作了堆栈类和一些函数来读取中缀表达式. 但是这个函数叫做 convertToPostfix(char * const inFix, char * const postFix) 负责将数组 inFix 中的 inFix 表达式转换为数组 postFix 中的后置表达式堆栈,没有做它应该做的事情.你们
..
我用 C 编程语言编写程序,我使用 objdump 将可执行文件转换为 asm 文件.我不知道 gcc 如何确定函数将使用的堆栈大小? int a(){国际温度[1024 * 1024];温度[0] = 1;返回温度[0];} 这只是为了解释问题,忽略它是幼稚的.gcc 真的会为函数 a 分配 1024 * 1024 字节的空间吗? 如果函数有点复杂,有时局部变量很多,编译器是如何确定
..
一个我不确定答案的基本问题.跟随功能有效吗? std::vector&测试函数(){std::vectorX;//做任何事返回 x;} 如果是这样,为什么?函数返回后程序不应该从堆栈中删除 x 吗?谢谢. 解决方案 行为未定义.您不应该返回对局部变量的引用.
..
我对一件事感到好奇.我怎样才能完成我目前的活动并开始另一项活动. 例子: MainActivity--(开始)-->登录活动--(如果成功,开始)-->同步活动--(如果成功开始)-->MainActivity(带有更新的数据). 所以我希望 SyncActivity 在成功同步后启动 MainActivity 并且如果我按下返回按钮不返回到 SyncActivity 或打开任何其他活动
..
有没有办法在运行时转储堆栈的内容? 我对可以通过 StackTrace 和 StackFrame 类获得的父函数信息(名称、参数、行)感兴趣.但是,我还想获取堆栈中的变量(在调用当前正在执行的方法中声明的局部变量).由于 Visual Studio 调试器可以做到这一点,我认为可能有一种方法可以在运行时在代码中做到这一点.有没有这样的方法? 解决方案 我想有两种方法可以实现.
..
在设计 C 接口时,通常只让用户程序知道的内容进入公共接口 (.h). 因此,例如,如果用户程序不需要知道结构的内部组件,则它们应该保持隐藏.这确实是一种很好的做法,因为结构的内容和行为将来可能会发生变化,而不会影响界面. 实现该目标的一个好方法是使用不完整类型. typedef struct foo opaqueType; 现在可以构建一个只使用指向 opaqueType
..
真是奇怪的 gcc 怪癖.看看这个: main() { int a[100];a[0]=1;} 产生这个程序集: 0: 55 推送 %rbp1: 48 89 e5 移动 %rsp,%rbp4: 48 81 ec 18 01 00 00 sub $0x118,%rspb: c7 85 70 fe ff ff 01 movl $0x1,-0x190(%rbp)12:00 00 0015:c9请
..
如您所知,当子程序调用时,当前 PC(程序计数器)值存储在堆栈中.我想在子程序中修改它,如下所示.我想使用 gcc 编译器在 Intel Core-i7 3632QM 上执行此操作. void main(){富();}无效的富(){从栈中弹出返回地址;修改退货地址;将其推入堆栈;} 解决方案 这几乎可以肯定是一个 XY 问题,你没有说你真正想要做什么.无论如何,这里是修改返回地址的示例代码:
..
根据 Android 文档: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html "当用户按下 Home 按钮离开任务时,当前活动停止,其任务进入后台.系统保留任务中每个活动的状态.如果用户稍后通过选择恢复任务启动任务的启动器图标,任务进入前台并恢复堆栈顶部的活动." 如
..
我正在为 Windows 64 位目标使用基于 GCC 4.6.1 的 MinGW64 构建.我正在玩新的英特尔 AVX 指令.我的命令行参数是 -march=corei7-avx -mtune=corei7-avx -mavx. 但是在堆栈上分配局部变量时,我开始遇到分段错误错误.GCC使用对齐的移动VMOVAPS和VMOVAPD来移动__m256和__m256d,这些指令需要32字节结盟
..
例如: void func1(){诠释 i = 123;func2(&i);}无效 func2(int *a){*a = 456;} 当func1调用func2时,一个指向局部变量的指针被传递给func2——指针指向堆栈.这对 C 的规则安全吗? 谢谢. 解决方案 i的作用域是func1,它比调用func2.所以绝对安全.
..