gpt4 book ai didi

c++ - 使用内存区域作为堆栈空间?

转载 作者:IT王子 更新时间:2023-10-28 23:37:34 26 4
gpt4 key购买 nike

在 Linux 中是否可以启动一个进程(例如,使用 execve)并使其使用特定的内存区域作为堆栈空间?

背景:

我有一个 C++ 程序和一个快速分配器,它给了我“快速内存”。我可以将它用于使用堆并在快速内存中创建它们的对象。美好的。但我也有很多变量存在于堆栈中。我怎样才能让他们也使用快速内存​​?

想法:实现一个“程序包装器”,它分配快速内存,然后启动实际的主程序,传递一个指向快速内存的指针,程序将其用作堆栈。这可能吗?

[更新]

pthread 设置似乎有效。

最佳答案

使用 pthreads,您可以为程序逻辑使用辅助线程,并使用 pthread_attr_setstack() 设置 堆栈地址:

NAME
pthread_attr_setstack, pthread_attr_getstack - set/get stack
attributes in thread attributes object

SYNOPSIS
#include <pthread.h>

int pthread_attr_setstack(pthread_attr_t *attr,
void *stackaddr, size_t stacksize);

DESCRIPTION
The pthread_attr_setstack() function sets the stack address and
stack size attributes of the thread attributes object referred
to by attr to the values specified in stackaddr and stacksize,
respectively. These attributes specify the location and size
of the stack that should be used by a thread that is created
using the thread attributes object attr.

stackaddr should point to the lowest addressable byte of a buf‐
fer of stacksize bytes that was allocated by the caller. The
pages of the allocated buffer should be both readable and
writable.

我不明白的是,您期望如何通过执行此类操作来提高性能(我假设您的“快速”内存的目的是提高性能)。

关于c++ - 使用内存区域作为堆栈空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com