小编squ*_*boo的帖子

GCC __static_initialization_and_destruction_0(__ inititize_p = 1,__ priority = 65535)

根据帖子,C++中的独立函数/数据,我继续将我的"公共数据"放在匿名命名空间中,如下所示,VS 2005/2008/2010上的所有内容在Windows(Vista 64位)上运行良好

namespace {
  ...
  static std::string mystrings[] = {
     str1,
     str2,
     ...,
     strN
  };
  ...
}

namespace mynamesp {
   ...
   use mystrings[] here..
   ...
}
Run Code Online (Sandbox Code Playgroud)

但是在Linux上(到目前为止测试的RHEL5使用GCC-4.1.2构建)我很快就出现了分段错误.

$>myprog 
Segmentation fault
$>gdb myprog 
GNU gdb Fedora (6.8-27.el5)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying" …
Run Code Online (Sandbox Code Playgroud)

c++ linux gcc gnu

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

在C++ for循环中使用向量堆错误?

通过在for循环中声明和使用向量,是否存在堆损坏的已知问题?例如这样做:

for(int i = 0; i < N; ++i) {
   std::vector<int> vec;
   for(int j = 0; j < 3; ++j) {
      vec.push_back(0); //-Initialize
   }
   ...
   ...
}
Run Code Online (Sandbox Code Playgroud)

c++ memory memory-management

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

等待抽象的异步任务

我对这个async/await用法很新.我试图await在UI中抽象异步和条件.我有一个抽象的基类:

public abstract class Base
{
    public abstract bool IsRunning { get; }
    public abstract Task<bool> Run();
}
Run Code Online (Sandbox Code Playgroud)

从它一些派生的实例,第一个是同步的:

internal class Derived1 : Base
{
    private readonly Base baseCase;
    private Task<bool> task;
    public Derived1(Base baseCase)
    {
        this.baseCase = baseCase;
    }
    public override bool IsRunning
    {
        get { return false; }
    }
    public override Task<bool> Run()
    {
        task = new Task<bool>(() => 
        {
            bool ok = DoSomething();
            return ok;
        });
        return task;
    }
}
Run Code Online (Sandbox Code Playgroud)

和异步实现的派生类:

internal class …
Run Code Online (Sandbox Code Playgroud)

c# task abstract async-await

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

指向指针向量的指针的内存消耗

我知道指针的大小是固定的(不是它指向的数据的大小).现在考虑到这一点,假设我在全局范围内有一个数据向量,并且我声明了指向一些/所有全局数据的指针向量的指针,这将额外使用多少内存(RAM)?我在这里完全不知所措,肯定会感谢一些想法/建议.我希望额外的内存消耗只是向量的大小乘以指针的固定大小(比如8字节),而不管数据的复杂程度如何; 因为它指向的数据存在于全球范围内(即,没有分配新数据;希望我已清楚地解释了我的想法).

一些表达我的问题的伪代码看起来像:

std::vector<data> global_data;
std::vector<data*>* my_data = new std::vector<data*>();  //-Is this even valid? 
//-Now populate the vector with pointers to data in global_data
for(int i=0; i<global_data.size(); ++i) {
   my_data->push_back(&global_data[i]);
}
Run Code Online (Sandbox Code Playgroud)

然后我的问题是RAM中有多少额外的内存(即,超过已经使用的内存来自创建global_data)被m_data用尽了

c++ pointers

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

标签 统计

c++ ×3

abstract ×1

async-await ×1

c# ×1

gcc ×1

gnu ×1

linux ×1

memory ×1

memory-management ×1

pointers ×1

task ×1