标签: stack

Java中的逃逸分析

据我所知,JVM使用转义分析进行一些性能优化,如锁定粗化和锁定省略.我很感兴趣,如果JVM有可能决定使用转义分析在堆栈上分配任何特定对象.

一些资源让我觉得我是对的.有JVM实际上做到了吗?

java stack allocation escape-analysis

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

C++类可以确定它是在堆栈还是堆上?

我有

class Foo {
....
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让Foo能够分开:

function blah() {
  Foo foo; // on the stack
}
Run Code Online (Sandbox Code Playgroud)

function blah() {
  Foo foo* = new Foo(); // on the heap
}
Run Code Online (Sandbox Code Playgroud)

我希望Foo能够做出不同的事情,这取决于它是在Stack上堆还是堆.

编辑:

Alof的人问我"为什么这样做?"

答案:

我现在正在使用重新计算的GC.但是,我希望能够运行标记和扫描.为此,我需要标记一组"根"指针 - 这些是堆栈上的指针.因此,对于每个类,我想知道它们是在堆栈中还是在堆中.

c++ heap stack

37
推荐指数
5
解决办法
1万
查看次数

如何禁用"返回"某些活动?

我不希望用户能够回到我的应用程序的启动画面.一个解决方案似乎是检查当前活动下面的活动是否是启动画面的实例,并在这种情况下退出应用程序,如下面的代码所示.但是,我不知道如何检查堆栈中之前的活动是什么.有人可以帮忙吗?有没有其他方法可以禁用"返回"给定的活动?

@Override
public void onBackPressed() { 
    if(<previous activity in stack is an instance of splashscreen>){   
        Intent exit_intent=new Intent(CurrentActivity.this, SplashScreen.class);
        exit_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        exit_intent.putExtra("EXIT", true);
        context.startActivity(exit_intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

stack android android-activity

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

基于堆栈缓冲的STL分配器?

我想知道是否可行的C++标准库兼容allocator使用(固定大小)缓冲区,它存在于堆栈中.

不知怎的,似乎这个问题在SO上还没有被问过这个问题,尽管它可能已经在其他地方被暗示过了.

所以基本上,它似乎是,只要我去搜索,它应该能够创建一个使用固定大小的缓冲区的分配.现在,乍一看,这应该意味着它应该有可能有一个使用固定大小的缓冲区,堆栈上的"生活"的分配,但它确实出现,这周围也没有普遍执行等.

让我举一个我的意思的例子:

{ ...
  char buf[512];
  typedef ...hmm?... local_allocator; // should use buf
  typedef std::basic_string<char, std::char_traits<char>, local_allocator> lstring;
  lstring str; // string object of max. 512 char
}
Run Code Online (Sandbox Code Playgroud)

这怎么可以实现?


这个问题答案(感谢R. Martinho Fernandes)链接到来自铬源的基于堆栈的分配器:http://src.chromium.org/viewvc/chrome/trunk/src/base/stack_container.h

然而,这个类似乎非常特殊,特别是因为StackAllocator 它没有默认的ctor - 而且我认为每个分配器类都需要一个默认的ctor.

c++ stack stl allocator

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

在Eclipse中导航Java调用堆栈

在像GDB这样的调试器中,当您在断点处停止时,您可以轻松地向上移动调用堆栈并检查相关的源和堆栈帧数据.

你如何在Eclipse中做到这一点?

java eclipse stack call

36
推荐指数
1
解决办法
5万
查看次数

在函数顶部或单独的范围内声明变量?

哪个是优选的,方法1或方法2?

方法1:

LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch (msg)
    {
        case WM_PAINT:
        {
            HDC hdc;
            PAINTSTRUCT ps;

            RECT rc;
            GetClientRect(hwnd, &rc);           

            hdc = BeginPaint(hwnd, &ps);
            // drawing here
            EndPaint(hwnd, &ps);
            break;
        }
        default: 
            return DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

方法2:

LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rc;

    switch (msg)
    {
        case WM_PAINT:
            GetClientRect(hwnd, &rc);

            hdc = BeginPaint(hwnd, &ps);
            // drawing here …
Run Code Online (Sandbox Code Playgroud)

c c++ stack function

36
推荐指数
4
解决办法
2万
查看次数

什么是堆栈溢出?

什么是堆栈溢出错误?它可能会出现什么类型的程序/编程语言?是否不太可能在Web应用程序代码中出现?

language-agnostic stack-overflow stack

35
推荐指数
4
解决办法
3912
查看次数


std :: stack是否公开了迭代器?

std::stackC++ STL中是否公开了底层容器的任何迭代器,还是应该直接使用该容器?

c++ stack stl

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

iOS SDK是否提供队列和堆栈?

我正在编写一个iPhone应用程序,我很惊讶Apple的Foundation Framework中似乎没有NSQueue或NSStack类.我看到从NSMutableArray开始自己滚动很容易,所以除非我错过了什么,否则我会这样做.我错过了什么吗?

queue stack ios

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