相关疑难解决方法(0)

如何使用C++在运行时获取内存?

我需要在我的程序运行时获取mem使用VIRT和RES并显示它们.

到目前为止我尝试了什么:

getrusage(http://linux.die.net/man/2/getrusage)

int who = RUSAGE_SELF; 
struct rusage usage; 
int ret; 

ret=getrusage(who,&usage);

cout<<usage.ru_maxrss;
Run Code Online (Sandbox Code Playgroud)

但我总是0.

c++ linux memory-management

79
推荐指数
6
解决办法
14万
查看次数

在不使用交换的情况下分配最大缓冲区

在Linux下的C/C++中,我需要分配一个大的(几千兆字节)内存块,以便存储连接到以太网端口的传感器的实时数据和大约110MB/s的流数据.我想分配尽可能多的内存,以最大化我可以存储的数据序列的长度.但是,我还需要确保不会进行磁盘交换,因为产生的延迟和磁盘访问带宽有限会导致传感器(非常有限)的缓冲区溢出.

确定要分配多少内存的最佳方法是什么?我仅限于分配比报告的可用内存稍小的块,还是可以更直接地与linux虚拟内存管理器连接?

c c++ linux virtual-memory

12
推荐指数
1
解决办法
2526
查看次数

C - 检查可用的ram?

我知道如何使用malloc()free()分配内存,但是还有一个标准的C函数来检查剩余多少内存,所以我可以定期调用它以确保我的代码没有内存泄漏?

我唯一能想到的是调用malloc(1)无限循环直到它返回错误,但是不应该有更有效的方法吗?

c malloc memory-leaks memory-management c99

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

获取标准C++ 11中剩余的可用内存?

是否可以在标准 C++ 11中获得系统(x86,x64,PowerPC/Windows,Linux或MacOS)上的剩余可用内存而不会崩溃?

一种天真的方式是尝试从太大的大小开始分配非常大的数组,每次失败时捕获异常并减小大小直到没有抛出异常.但也许有一种更有效/更聪明的方法......

编辑1:事实上我不需要确切的内存量.我想知道大约(100MB的错误条)我的代码在启动时可以使用多少.

编辑2:您如何看待这段代码?在程序开始时运行它还是可以破坏内存是否安全?

#include <iostream>
#include <array>
#include <list>
#include <initializer_list>
#include <stdexcept>

int main(int argc, char* argv[])
{
    static const long long int megabyte = 1024*1024;
    std::array<char, megabyte> content({{'a'}});
    std::list<decltype(content)> list1;
    std::list<decltype(content)> list2;
    const long long int n1 = list1.max_size();
    const long long int n2 = list2.max_size();
    long long int i1 = 0;
    long long int i2 = 0;
    long long int result = 0;
    for (i1 = 0; i1 < n1; ++i1) {
        try …
Run Code Online (Sandbox Code Playgroud)

c++ memory memory-management exception c++11

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

Linux/Windows中的C/C++内存使用API

我想获得每个进程和系统范围的内存使用信息.在Windows中,它非常简单.GetProcessMemoryInfo和GlobalMemoryStatusEx可以非常轻松地完成这些工作.例如,GetProcessMemoryInfo给出给定进程的"PeakWorkingSetSize".GlobalMemoryStatusEx返回系统范围的可用内存.

但是,我需要在Linux上这样做.我正在尝试找到与GetProcessMemoryInfo和GlobalMemoryStatusEx等效的Linux系统API.

我发现'getrusage'.但是,struct rusage中的max'ru_maxrss'(驻留集大小)仅为零,未实现.此外,我不知道获得系统范围的可用内存.

目前的解决方法,我正在使用"system("ps -p%my_pid -o vsz,rsz");".手动登录到文件.但是,处理数据很脏并且不方便.

我想知道一些花哨的Linux API用于此目的.

c linux winapi memory-management

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

C++检查可用的ram?

在C++中,我如何检查我有多少RAM?

我在Windows上,但对Unix的答案以及windows感兴趣.

c++

4
推荐指数
1
解决办法
6824
查看次数

如何使用 vc++ 找出当前线程的堆栈上剩余多少空间?

我正在使用 VC++ 2012。我想知道当前线程中有多少堆栈内存可用。

快速搜索指向使用 malloc.h 和 stackavail() 函数,但它在 Visual C++ 2012 中不存在。我如何以另一种方式实现这一点?

有问题的例子是这样的:

#include "stdafx.h"
#include <iostream>
#include <malloc.h>

using namespace std;

int _tmain()
{
    cout << "Available stack: " << stackavail() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

4
推荐指数
1
解决办法
2277
查看次数

使用C获取系统的总内存

我试图通过C获得全部和可能的系统空闲内存.它应该是系统无关的.

要启动讨论,我可以建议使用getpagesize()方法来获取页面大小.任何人都可以帮助关于内存页面的数量会很好.

c memory

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

malloc()的最大大小

可能重复:
malloc可以分配的最大内存!

我怎么知道我可以占用的堆的最大大小malloc().我使用的是MS Visual Studio 2010.

c heap malloc visual-studio

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