相关疑难解决方法(0)

如何在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万
查看次数

为什么声明足够大小的 2D 数组会在 Linux 上导致段错误,而在 macOS 上不会?

问题

我试图在 C / C++ 中声明一个大型 2D 数组(又名矩阵),但它仅在 Linux 上因段错误而崩溃。Linux 系统安装的 RAM 比 macOS 笔记本电脑多得多,但它只会在 Linux 系统上崩溃。

我的问题是:为什么只会在 Linux 上崩溃,而在 macOS 上不会?

这是一个重现该问题的小程序:

// C++ program to segfault on linux
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    cout << "Let's crash for no raisin! " << endl;

    cout << "Int size: " << sizeof(int) << endl;
    for (int n=1012; n < 2000; n++) {
      cout << "Declaring Matrix2D of size: " << n << "x" << n …
Run Code Online (Sandbox Code Playgroud)

c++ linux arrays macos

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

标签 统计

arrays ×1

c ×1

c++ ×1

linux ×1

macos ×1

ruby ×1

stack ×1

ulimit ×1