相关疑难解决方法(0)

260
推荐指数
10
解决办法
20万
查看次数

理解术语和概念的含义 - RAII(资源获取是初始化)

您能否请C++开发人员详细介绍RAII是什么,为什么重要,以及它是否与其他语言有任何关联?

知道一点点.我相信它代表"资源获取是初始化".但是,这个名称并不符合我对RAII的理解(可能不正确):我得到的印象是RAII是一种初始化堆栈中对象的方式,当这些变量超出范围时,析构函数会自动被称为导致资源被清理.

那么为什么不称为"使用堆栈触发清理"(UTSTTC :)?你怎么从那里到"RAII"?

你怎么能在堆栈上创建一些东西来清理堆上的东西呢?此外,是否有不能使用RAII的情况?你有没有发现自己希望收集垃圾?至少一个垃圾收集器,你可以使用一些对象,同时让其他人管理?

谢谢.

c++ garbage-collection raii resource-management

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

我需要了解C++中的内存?

我一直在尽力学习C++,但我之前的培训在一个主要问题上不足:内存管理.我的主要语言都有自动垃圾收集,所以跟踪一切从来没有真正必要.我已经尝试过在线阅读C++中的内存管理,但我对此感到怀疑,因为我遗漏了一些东西.

所以,这是一个多部分的问题:

  • 关于内存管理我需要了解的最低限度是什么?(或者,我在哪里找到它)?
  • 我在哪里可以获得中级和高级知识/教程/等(一旦完成基础知识)?

  • 进一步来说:
  • 指针和引用之间的性能差异是什么?
  • 我听说在循环中,你需要确保delete在循环重新迭代之前调用任何新指针.它是否正确?你需要用引用做些什么吗?
  • 什么是内存泄漏的经典例子?
  • 我需要了解以下内容(我是否真的需要使用它们 - 如果是这样,在哪里?):
    • malloc
    • free
    • calloc
    • realloc

***********************更新*******************

这是为了解释在评论一中对lmgtfy的引用(由Ewan提供).如果您开始阅读那里可用的信息,则对初学者没用.我认为这是一个伟大的理论,但它对这个问题既不相关也不有用.

c++ pointers memory-management reference

16
推荐指数
5
解决办法
1513
查看次数

如何克隆包含指针的对象?

我有个问题.我需要克隆包含指针的对象类.问题的一个示例在以下代码中:

#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <vector>

class CPoint
{
protected:
    int m_x;
    int m_y;

    int *m_p;

public:
    CPoint();
    CPoint(int x, int y);
    ~CPoint();

    CPoint*         clone();
    static CPoint*  clone(CPoint& p);

    int getX();
    int getY();
    void setX(int x);
    void setY(int y);

    void toString();
};

int CPoint::getX()
{
    return m_x;
}

int CPoint::getY()
{
    return m_y;
}

void CPoint::setX( int x )
{
    m_x = x;
}

void CPoint::setY( int y )
{
    m_y = y;
}

void CPoint::toString()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ oop class

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