相关疑难解决方法(0)

1730
推荐指数
11
解决办法
54万
查看次数

如何在C++中实现垃圾收集

我在C中看到了一些关于实现GC的帖子,有些人说这是不可能的,因为C是弱类型的.我想知道如何在C++中实现GC.

我想要了解如何做到这一点.非常感谢你!

这是我朋友告诉我的彭博采访问题.那时他做得很糟糕.我们想知道您对此的看法.

c++ garbage-collection

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

如何检测指针是否被删除并安全删除?

C++中如何决定或知道指针是否被删除?

当我试图删除以前在代码的另一部分中删除的指针时,它抛出了无法处理的异常.

我想知道是否有办法检查或尝试删除指针?有关高级内存操作的任何参考.

我也想掌握指针的未处理异常,并且对受保护或访问的访问是违规的,......这种错误.

感谢那些提供一些知识和时间来帮助其他人并分享他们的好处的人


更新

许多现代c ++开发人员社区的重要建议是 - 使用智能指针或尝试避免使用原始指针.但是对于抛出安全性和保证内存不足(ISO_CPP_FAQ),当然如果你想避免使用智能指针的小开销[可能总是不明显但是它们有开销]你可以编写处理原始指针的自定义方法[ type*] - 这不是一般的. 首选智能指针指向原始指针.

在"Going Native 2013"​​中,给出了一个常见的建议 - 从不使用原始指针.

c++ pointers memory-management

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

Qt中的智能指针

就像它已经写在这里 Qt到目前为止有8个特定的智能指针类.它看起来就像你需要的一切.但是,为了使用这些智能指针中的任何一个,您的类必须从QObject派生,这并不总是方便的.在Qt中是否有其他智能指针实现可以与任意类一起使用?

c++ qt smart-pointers

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

unique_ptr VS auto_ptr

可能重复:
std :: auto_ptr到std :: unique_ptr有
哪些C++智能指针实现可用?

让我说我有这个struct:

struct bar 
{ 

};
Run Code Online (Sandbox Code Playgroud)

当我像这样使用auto_ptr:

void foo() 
{ 
   auto_ptr<bar> myFirstBar = new bar; 
   if( ) 
   { 
     auto_ptr<bar> mySecondBar = myFirstBar; 
   } 
}
Run Code Online (Sandbox Code Playgroud)

然后在auto_ptr<bar> mySecondBar = myFirstBar;C++中将所有权从myFirstBar传输到mySecondBar,并且没有编译错误.

但是当我使用unique_ptr而不是auto_ptr时,我得到编译器错误.为什么C++不允许这样?这两个智能指针之间的主要区别是什么?什么时候需要用什么?

c++ smart-pointers c++11

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

C++中的自动指针和共享指针有什么区别

我听说自动指针拥有自己的对象,而共享指针可以有许多指向它们的对象.为什么我们不一直使用共享指针.

与此相关的是智能指针,人们可以将这个术语与共享指针互换使用.它们是一样的吗?

c++ smart-pointers auto-ptr shared-ptr

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

C++中函数指针的问题

我打算使用函数指针在类中实现不同的函数.但是,在尝试实现一个这样的功能时,我遇到了一些麻烦.

代码在这里:

std::vector<int> * (*create_vector)()
{
    std::vector<int> * vec_p = new std::vector<int>;
    return vec_p;
}
Run Code Online (Sandbox Code Playgroud)

错误如下:

3: [Error] expected primary-expression before '*' token
3: [Error] 'vec_p' was not declared in this scope
3: [Error] expected '}' before ';' token 
4: [Error] expected unqualified-id before 'return' 
5: [Error] expected declaration before '}' token
Run Code Online (Sandbox Code Playgroud)

有什么我误解了函数指针,还是一个不同的问题?

c++ function-pointers

5
推荐指数
2
解决办法
812
查看次数

QSharedPointer VS std :: tr1 :: shared_ptr VS boost :: tr1 :: shared_ptr

这三个是分别来自Qt,STL和Boost的共享指针类.它们的功能似乎相同,所以我很困惑:

  1. 每个人的优点和缺点是什么?
  2. 为什么Boost和Qt版本甚至存在 - 它已经在STL中,为什么要自己制作?
  3. 我该如何选择使用哪一个?

c++ qt boost stl smart-pointers

3
推荐指数
2
解决办法
3706
查看次数

执行所有权转移的智能指针,当C++ 11不可选时,不会共享

目前我正在解决我的问题,boost::shared_ptr但语义不太正确,因为我将成员从一个对象"移植"到另一个对象.我正在查看此列表,但它没有产生太多.我的简短谷歌搜索也是如此.

基本上我正在寻找一个unique_ptr适用于我的gcc4.2的实现(因此限制不使用C++ 11)

c++ smart-pointers

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

C++ - 使用类参数定义Vector大小

您好我正在尝试用C++创建一个遗传算法,我试图使用vector作为容器,问题是我不知道如何设置向量的大小,因为向量有一个像这样的类参数

class population
{
    friend class chromosome;
private:
    int population_number;
    int best_index[2];
    vector <chromosome *> chromosome_population;
public:
    population(int numberOfPopulation);
    population(int numberOfPopulation,int numberOfSynapse);
    ~population();
    int worst_chromosome();
    void mating();
    void crossover(int parent_1,int parent_2);
};
Run Code Online (Sandbox Code Playgroud)

这是人口类,这里是染色体类

class chromosome
{
    friend class population;
private:
    int chromosome_id;
    float fitness;
    vector <gen *> gen_chromosome;
public:
    chromosome();
    ~chromosome();
    void fitness_function();
    void mutation_translocation();
    int get_chromosome_size();
};
Run Code Online (Sandbox Code Playgroud)

如何在population类构造函数中设置向量长度?我试过使用vector.pushback和vector.resize,但两者都会给我错误,因为参数不匹配.实际上我理解为什么它会变成错误但我不知道如何匹配矢量pushback中的参数这里是我的人口构造函数

population::population(int numberOfPopulation)
{
    srand (time(NULL));
    population_number = numberOfPopulation;
    for(int a=0;a<population_number;a++)
    {
        chromosome_population.push_back();
    }
    cout<<chromosome_population.size();
    for(int i=0;i<population_number;i++)
    {
        chromosome_population[i]->chromosome_id = i;
        int …
Run Code Online (Sandbox Code Playgroud)

c++ artificial-intelligence vector

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

删除指针内存并确认

考虑以下因素:

tbModelHFrame = new TbModelHeaderFrame(this, storage->getDataBase());
Run Code Online (Sandbox Code Playgroud)

我想删除tbModelHFrame内存的正确方法是

delete tbModelHFrame;
Run Code Online (Sandbox Code Playgroud)

对?

如何检查内存是否真正发布?

c++ qt pointers memory-management

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

根据C++中的输入参数创建属于类的对象

我正在尝试构建一个依赖于输入参数的类型的对象.例如,我的对象被称为'进程',并且在运行时输入2到5(包括)之间的整数,并且会发生类似这样的事情:

if (input == 2) TwoJ   process;
if (input == 3) ThreeJ process;
if (input == 4) FourJ  process;
if (input == 5) FiveJ  process;
Run Code Online (Sandbox Code Playgroud)

显然上述方法不起作用,因为该对象立即超出范围.有没有办法很好地实现这个?干杯

c++ oop class

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

如果可能的话使用boost :: scoped_ptr

我在pagePtr.h中有这样的东西

typedef int (*FunPtrType)(char* sz, unsigned int max_bytes, char* arg1,
char* arg2, char* arg3, char* arg4);
Run Code Online (Sandbox Code Playgroud)

以及创建对象的静态函数

static pagePtr* CreatePage( FunPtrType Ptr2Fun)
{
    return new pagePtr(ptr2Fun);
}
Run Code Online (Sandbox Code Playgroud)

会提升:: scoped_ptr帮助我不要担心abt删除后来创建的那些.如果是,我应该如何在这种情况下实施.如果可以的话,还有哪些更好的选项可以删除创建的对象.

c++ boost

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