标签: stack

如何使用glibc的字符串实现在堆栈上分配std :: string?

int main(void)
{
   std::string foo("foo");
}
Run Code Online (Sandbox Code Playgroud)

我的理解是上面的代码使用默认的allocator来调用new.因此,即使在堆栈上分配了std :: string foo,foo中的内部缓冲区也会在堆上分配.

如何创建完全在堆栈上分配的字符串?

c++ memory heap stack stdstring

17
推荐指数
2
解决办法
1万
查看次数

从Vector继承的Java类Stack的负面影响是什么?

通过扩展类Vector,Java的设计者能够快速创建类Stack.这种继承使用的负面影响是什么,特别是对于类Stack?

非常感谢.

java inheritance stack vector

17
推荐指数
3
解决办法
9019
查看次数

是否可以在标准C中执行堆栈中的代码?

以下代码不能按预期工作,但希望说明我的尝试:

long foo (int a, int b) {
  return a + b;
}

void call_foo_from_stack (void) {
  /* reserve space on the stack to store foo's code */
  char code[sizeof(*foo)];

  /* have a pointer to the beginning of the code */
  long (*fooptr)(int, int) = (long (*)(int, int)) code;

  /* copy foo's code to the stack */
  memcpy(code, foo, sizeof(*foo));

  /* execute foo from the stack */
  fooptr(3, 5);
}
Run Code Online (Sandbox Code Playgroud)

显然,sizeof(*foo)不返回foo()函数代码的大小.

我知道在某些CPU上执行堆栈是受限制的(或者至少在设置了限制标志的情况下).除了最终可以存储在堆栈中的GCC嵌套函数之外,还有一种方法可以在标准C中实现吗?

c stack executable

17
推荐指数
2
解决办法
3635
查看次数

如何使用gdb来探索堆栈/堆?

任何人都可以给我一个快速概述/指向我检查C程序的堆栈(和堆?)的方法的文档?我认为这应该用GDB来完成,但是如果还有其他更直接的选择,那么这也应该没问题.

谢谢.

c debugging heap stack gdb

17
推荐指数
3
解决办法
3万
查看次数

为什么Stack是一个类,而Queue是一个接口?

我认为它们非常相似......我们何时需要使用堆栈或队列,为什么不使用ArrayList或LinkedList来替换它们呢?

java queue stack

17
推荐指数
2
解决办法
8000
查看次数

错误:Theme.Translucent&FLAG_ACTIVITY_REORDER_TO_FRONT

我有半透明主题的活动:

android:theme="@android:style/Theme.Translucent.NoTitleBar"
Run Code Online (Sandbox Code Playgroud)

此问题也可以通过以下主题重现:

<style name="MyTheme" parent="@android:style/Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackground">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

此活动在启动时加载并保存在内存中(当我开始此活动时,我将该FLAG_ACTIVITY_REORDER_TO_FRONT标志作为额外标记).

问题:当我开始此活动时(从菜单中),活动没有显示,没有任何反应.但是:如果我删除半透明主题:一切正常,活动就会回到正面.

是的onNewIntent()被调用.

如果我按回半透明活动是下面的那个!但它需要成为顶级.

一个例子是

A(半透明活动)BC

堆栈:A

一个startActivity(B)

堆栈:A,B

B startActivity(C)

堆栈:A,B,C

c startActivity(A)//带有标志FLAG_ACTIVITY_REORDER_TO_FRONT

堆栈应为:B,C,A

但是A永远不会被带到前面,尽管它的onNewIntent()被调用.

有任何想法吗?

旁注


有趣的未回答的问题:http://groups.google.com/group/android-developers/browse_thread/thread/269c67f6b39cfe45?pli = 1


android:launchModesingleTasksingleInstance不希望被使用.这些更改了backstack并将活动移动到自己的堆栈中.因此我们不再有A,B,C了.

singleTask和singleInstance - 不适合大多数应用程序,因为它们会导致用户可能不熟悉的交互模型,并且与大多数其他应用程序非常不同.

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

想要直观表示launchModes的任何人都可以尝试以下应用:https://play.google.com/store/apps/details? id = com.novoda.demos.activitylaunchmode

stack transparency android android-intent android-activity

17
推荐指数
1
解决办法
3355
查看次数

如何在Mac OS X上使用ulimit或每个进程为C或Ruby程序更改堆栈大小?

似乎为C程序或Ruby程序(使用C堆栈)设置堆栈大小的推荐方法是ulimit在Bash shell中使用.但

$ ulimit -s
8192

$ ulimit -s 16384
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

sudo没有帮助.有没有办法将其设置为16MB,32MB或64MB?我认为应该有一种方法来设置每个程序调用,而不是设置系统范围的参数?

现在8192可能意味着8MB这是非常小的,如果将其与进程可以使用的数量进行比较,有时甚至高达2GB的RAM.

(更新的注释: ulimit -a可以显示其当前值).

(更新2:它实际上似乎ulimit -s <value>是每个shell,如果你第一次设置它,它通常会工作.问题是当你第二次设置它,然后它可能会返回一个错误)

c ruby stack ulimit

17
推荐指数
2
解决办法
5万
查看次数

堆栈是CPU还是RAM?

我有一些关于堆栈的问题.

  1. 堆栈是CPU还是RAM?
  2. 堆栈是运行OPcode的地方吗?
  3. EIP是CPU还是RAM?

memory cpu stack opcode eip

17
推荐指数
3
解决办法
1万
查看次数

打印出堆栈指针的值

如何在Linux(Debian和Ubuntu)中用C打印出堆栈指针的当前值?

我试过谷歌但没有找到结果.

c linux stack

17
推荐指数
4
解决办法
3万
查看次数

何时在c#中的堆栈上分配数组?

我一直试图找出什么时候在堆栈上分配的东西,我无法弄清楚如何在堆栈上分配数组(或者更确切地说是其中的值);

在这个例子中:

public void foo()
{
    int bar[] = new int [10];
}
Run Code Online (Sandbox Code Playgroud)

将在堆上分配10个int结构,只有指向它们的指针才会在堆栈上,对吗?

如何使固定大小的数组进入堆栈?如果我使用的是我定义的结果怎么办?

如果我想将数组大小作为参数传递给函数怎么办?

据我所知,当调用函数时,如果在调用函数时已知大小,则在堆栈上获取任意大小的数组应该没有问题.

我是否应该为此烦恼?据我所知,在堆栈上获取这个固定大小的数组会提高性能,因为没有完成堆分配.

c# arrays heap stack allocation

17
推荐指数
2
解决办法
7162
查看次数