小编osg*_*sgx的帖子

malloc实现是否会将free-ed内存返回给系统?

我有一个长期存在的应用程序,频繁的内存分配 - 释放.任何malloc实现都会将释放的内存返回给系统吗?

在这方面,什么是以下行为:

  • ptmalloc 1,2(默认为glibc)或3
  • dlmalloc
  • tcmalloc(谷歌线程malloc)
  • solaris 10-11默认malloc和mtmalloc
  • FreeBSD 8默认malloc(jemalloc)
  • Hoard malloc?

更新

如果我有一个应用程序,其白天和夜晚的内存消耗可能非常不同(例如),我可以强制任何malloc将系统释放的内存吗?

如果没有这样的返回,释放的内存将被多次换出,但这样的内存只包含垃圾.

malloc free mmap glibc tcmalloc

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

为什么字符串文字是l值,而所有其他文字都是r值?

C++ 03 5.1主要表达式
§2:

文字是主要表达方式.它的类型取决于它的形式(2.13).字符串文字是左值; 所有其他文字都是右值.

这背后的理由是什么?
据我所知,字符串文字是对象,而所有其他文字都不是.并且l值总是指对象.

但问题是为什么字符串文字是对象,而所有其他文字都不是?
这个理由在我看来更像是鸡蛋或鸡肉问题.

我理解这个问题的答案可能与硬件架构有关,而不是C/C++作为编程语言,但我想听到同样的看法.

注意:我将此问题标记为c&c ++,因为C99标准也有类似的引用,特别是§6.5.1.4

c c++ literals string-literals

53
推荐指数
4
解决办法
5760
查看次数

tcmalloc/jemalloc和内存池之间的区别是什么

tcmalloc/jemalloc是改进的内存分配器,并且还引入了内存池以实现更好的内存分配.那么它们之间有什么区别以及如何在我的应用程序中选择它们呢?

c linux memory malloc tcmalloc

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

C++,是否可以直接调用构造函数,而不需要新的?

new如果我已经有对象的内存,我可以显式调用构造函数而不使用吗?

class Object1{
    char *str;
public:
    Object1(char*str1){
        str=strdup(str1);
        puts("ctor");
        puts(str);
    }
    ~Object1(){
        puts("dtor");
        puts(str);
        free(str);
    }
};

Object1 ooo[2] = {
     Object1("I'm the first object"), Object1("I'm the 2nd")
};

do_smth_useful(ooo);
ooo[0].~Object1(); // call destructor
ooo[0].Object1("I'm the 3rd object in place of first"); // ???? - reuse memory
Run Code Online (Sandbox Code Playgroud)

c++ constructor placement-new

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

C++"new"运算符能否在现实生活中抛出异常?

new操作员可以在现实生活中抛出异常吗?

如果是这样,除了杀死我的应用程序之外,我是否有任何处理此类异常的选项?

更新:

任何真实的,重要的new应用程序检查失败并在没有内存时恢复吗?


也可以看看:

c++ exception out-of-memory new-operator

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

链接器内联函数可以吗?

在该文件中file1.c,调用在文件中实现的函数file2.c.当我链接file1.o,并file2.o为可执行文件,如果该功能file2是非常小的,将连接器自动检测功能小,内联呼吁?

c optimization linker inline

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

什么是FLOP/s并且它是一个很好的性能衡量标准?

我被要求测量一个解决多CPU系统微分方程的fortran程序的性能.我的雇主坚持认为我测量FLOP/s(每秒浮动操作)并将结果与​​基准(LINPACK)进行比较,但我不相信它是要走的路,因为没有人可以向我解释什么是FLOP.

我做了一些关于FLOP究竟是什么的研究,我得到了一些相当矛盾的答案.我得到的最受欢迎的答案之一是'1 FLOP =加法和乘法运算'.真的吗?如果是这样,再次,在物理上,究竟是什么意思?

无论我最终使用哪种方法,它都必须是可扩展的.一些版本的代码解决了具有数百万未知数的系统,并且需要数天才能执行.

在我的案例中,还有哪些其他有效的衡量绩效的方法(我的案例摘要是'fortran代码,它在数百个CPU上反复进行了大量的算术计算)?

performance benchmarking flops

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

何时/如何将Linux加载到地址空间?

我的问题如下:

何时是程序中指定的共享对象的地址?链接期间?数据加载中?如果我想在程序system内部找到命令的内存地址,libc我可以很容易地找到它gdb,但是如果我不想将程序带入调试器呢?

这个地址可以从一次运行变为运行吗?是否还有其他静态分析工具可以查看运行时将库或函数加载到该程序的内存空间的位置?

编辑:我想在程序之外的这些信息(即使用实用程序,如objdump收集信息)

c linux compiler-construction linker shared-libraries

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

Viber messenger API

我正在寻找一个库来向Viber messenger服务器发出请求.我需要:

  • 向用户发送消息;
  • 检查发送的消息发送状态;
  • 检查用户是否拥有Viber帐户.

我知道Viber没有为开发人员提供开放API,但也许有人有反向生成Viber协议的经验或其他与Viber通信的方法.或者,如果有人能够做到,请写信给我,我有一个建议.

api messenger viber

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

服务不支持chkconfig

美好的一天,程序员.我有个问题.请帮忙.我正在创建一个服务,它必须在加载Linux时自动加载.因此,我将脚本复制到目录/etc/rc.d/init.d或/etc/init.d/中.但是当我正在执行命令时

chkconfig --add listOfProcesses
Run Code Online (Sandbox Code Playgroud)

发生错误:

service  listOfProcesses doesn't support chkconfig
Run Code Online (Sandbox Code Playgroud)

这是脚本的内容.我在Google中找到了第一个版本并将其用作模式.

#!/bin/bash
# listOfProcesses   Start the process which will show the list of processes
# chkconfig: 345 110 02
# description: This process shows current time and the list of processes
# processname: listOfProcesses
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: shows current time and the list of processes
# Description: This process shows …
Run Code Online (Sandbox Code Playgroud)

linux bash

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