标签: stack-size

如何识别对象是否应该在堆栈中?

我一直在寻找在C++中在堆栈或堆上分配对象的经验法则.我在这里找到了许多关于SO的讨论.很多人说,这是关于物体的寿命.如果您需要比函数范围更长的生命周期,请将其放入堆中.这很有道理.

但令我困惑的是,许多人说,如果它们很小,就会将对象分配给堆栈.如果对象很大,请将其放入堆中.但他们都没有说如何识别物体是否很大?

我有以下问题,

  1. 如何识别对象是否很大?
  2. 堆栈最大大小是多少?每个OS都有不同的堆栈大小?
  3. 我有一个包装的包装类vector<string>.它将有大约100件物品.如果我将这个类分配给堆栈,它是否会导致堆栈溢出?我试过这个,但效果很好.不确定我做错了什么.

c++ heap stack stack-size

7
推荐指数
1
解决办法
767
查看次数

剩余堆栈的大小,直到发生堆栈溢出

在Linux上,使用C,假设我有一个动态确定的n命名,我必须在一个数组(int my_array[n])中存储的元素数量只是一段时间,比如一个函数调用,其中被调用的函数只使用很少的内存(一些百字节).

大部分n是小的,十分之一.但有时n可能很大,高达1000或1000'000.

我如何计算我的堆栈是否可以保存n*o + p字节而不会溢出?

基本上:我的堆栈上剩下多少字节?

c linux stack stack-size

7
推荐指数
1
解决办法
1234
查看次数

为什么GCC为不同范围内的本地联合分配单独的堆栈空间?

请考虑以下代码:

#include <stdlib.h>

#ifndef TRY
#define TRY struct
#endif

TRY testme
{
  int one;
  int two;
  char three;
  int four;
};

int
main (void)
{
  {
    volatile TRY testme one;

    one.one = 2;
    one.three = 7;
  }

  {
    volatile TRY testme twos;

    twos.one = 3;
  }

  {
    volatile TRY testme one;

    one.one = 4;
  }

  {
    volatile TRY testme twos;

    twos.one = 5;
  }

  {
    volatile TRY testme twos;

    twos.one = 6;
  }

  {
    volatile TRY testme twos;

    twos.one = …
Run Code Online (Sandbox Code Playgroud)

c stack gcc stack-size

7
推荐指数
1
解决办法
602
查看次数

React Native - 为什么更新[超出最大堆栈大小]

我正在尝试使用React Native的Why-Did-You-Update来分析我的应用在没有必要的情况下重新渲染的位置.我使用Android模拟器来测试我的应用程序.

我在App.js中有这个代码

if (DEBUG) {
    let createClass = React.createClass;
    Object.defineProperty(React, 'createClass', {
        set: (nextCreateClass) => {
            createClass = nextCreateClass;
        }
    });
    const {whyDidYouUpdate} = require('rn-why-did-you-update');
    whyDidYouUpdate(React, { include: /^./, exclude: /^YellowBox/ });
}
Run Code Online (Sandbox Code Playgroud)

超出最大堆栈大小

在此输入图像描述

我已经理解(来自其他网站)来自包的递归被打破,(无限循环)但我无法理解为什么它在React Native中发生,因为它似乎与React一起工作.

谢谢.

javascript performance stack-size reactjs react-native

7
推荐指数
0
解决办法
359
查看次数

如何知道.exe程序的堆栈大小限制?

看来我的程序(用 mingw 构建g++)由于堆栈内存不足而崩溃。我使用编译选项-Wl,--stack,64000000来增加堆栈限制,但问题仍然存在。我想知道是否有实用程序或方法来检查程序的当前堆栈限制.exe,以便我可以验证限制确实已更改为该值。

stack gcc exe mingw stack-size

7
推荐指数
1
解决办法
3320
查看次数

如何在linux中确定程序的堆栈大小?

如何确定linux中程序的当前堆栈大小?

据说每个程序的堆栈大小在linux中都是8 MB但是当你使用cat/proc // mmap时它会显示不同的大小.

另外,如何确定关联线程的堆栈大小?既然据说线程有自己的私有堆栈?

linux multithreading stack-size

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

安全线程堆栈大小?

我正在编写一些产生相当多线程的代码(目前约为512,但未来可能会更高).每个线程只执行少量操作,因此我希望线程在系统上的开销保持在最低限度.

我正在设置堆栈大小pthread_attr_setstacksize(),我可以从中获得最小的允许堆栈大小PTHREAD_STACK_MIN.但我的问题是:使用PTHREAD_STACK_MIN线程堆栈大小是否安全?我如何计算我需要多少堆栈?是否有任何隐藏的开销需要添加到我的计算中?

此外,还有其他技术可以用来减少线程在系统上的负担吗?

c pthreads stack-size

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

有没有一种方法可以将默认堆栈大小增加到超过16777216字节?

问题说明了一切。尝试增加链接器选项中的堆栈大小会产生错误:

最大堆栈大小必须是65536和16777216之间的整数。

这16MB的限制是Delphi编译器的基本限制,还是IDE施加的任意限制?还有其他增加此值的方法吗?

注意(期待评论...):

  • 之所以需要更大的堆栈,是因为大量的静态数组类型用作局部变量
  • 我了解需要这样做是糟糕设计的征兆
  • 这是一个大型的遗留应用程序,我不负责其设计和维护。
  • 重构为动态数组是可行的,但是会导致50%的性能损失。
  • 其他重构也是可能的-可能需要数周的时间。这很可能会作为一个附带项目结束。
  • 同时,现在需要功能,并且较大的堆栈将很容易解决。
  • 是的,我真的非常知道这是一件坏事,一件坏事。

delphi stack-size delphi-xe2

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

Babel,使用 path.replaceWith 时超出了最大调用堆栈大小

我正在尝试使用 babel 模块,babylon, babel-traverse。当我试图替换一个节点时,程序崩溃了Maximum call stack size exceeded。这是我的代码

import * as babylon from 'babylon'
import traverse from 'babel-traverse'
import generate from 'babel-generator'
import * as t from 'babel-types'


const code = `
import a from 'b'
n === 3
`
const ast = babylon.parse(code, {
  sourceType: 'module'
})

const visitor = {
  BinaryExpression(path) {
    console.log((path.node))
    path.replaceWith(t.binaryExpression('**', t.numericLiteral(3), t.numericLiteral(4)))
  }
}

traverse(ast, visitor)

let generated = generate(ast, null, code)
console.log(generated.code)
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 babel 依赖项,知道吗?

"dependencies": {
"babel-generator": …
Run Code Online (Sandbox Code Playgroud)

stack-size babylonjs babeljs

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

如何更改 Android 应用程序中(线程的)堆栈大小?

我的服务中出现 stackoverflow 错误,该错误附加到我的主要活动中。有没有办法更改我的服务中的堆栈大小?我遇到了 Xss 参数,但是,显然它在虚拟机选项中不可用(帮助->编辑虚拟机选项)。

一些背景知识: 当我尝试读取代码中的序列化机器学习模型然后对其进行反序列化时,出现错误。当此模型构建在小型数据集上时,相同的函数可以正常工作,但当我使用更大的数据集构建相同的模型时,该函数就不起作用了。

关于我该怎么做有什么想法吗?

java android stack-size timertask

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