相关疑难解决方法(0)

为什么使用'new'导致内存泄漏?

我首先学习了C#,现在我开始使用C++.据我所知,newC++中的operator 与C#中的operator 不相似.

你能解释一下这个示例代码中内存泄漏的原因吗?

class A { ... };
struct B { ... };

A *object1 = new A();
B object2 = *(new B());
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-leaks c++-faq new-operator

130
推荐指数
9
解决办法
2万
查看次数

用于创建类实例的C++语法

我一直在研究如何在C++中创建一个类的实例.似乎有几种方法可以做到这一点:

ClassExample classExample1;
ClassExample classExample2();
ClassExample classExample3(void);
ClassExample classExample4 = ClassExample();
Run Code Online (Sandbox Code Playgroud)

1和4调用默认构造函数.当我使用2和3时,我似乎无法引用变量并且它们未初始化.在调试器中,它们被逐步调整.为什么是这样?这些都一样吗?有什么不同?有首选吗?

当我们有参数传递时,有两种方法可以做到这一点:

ClassExample classExample1(true, 1, "");
ClassExample classExample2 = ClassExample(true, 1, "");
Run Code Online (Sandbox Code Playgroud)

再说一次,有区别吗?什么是首选方案?

UPDATE

C++ 11还引入了这种初始化形式:

ClassExample classExample2{ };
Run Code Online (Sandbox Code Playgroud)

这是以下的平等:

ClassExample classExample2();
Run Code Online (Sandbox Code Playgroud)

c++ class instance c++11

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

内存来自于在没有new关键字的情况下初始化C++对象?

考虑代码段:

ClassName* p;
p = new ClassName;
Run Code Online (Sandbox Code Playgroud)

据我了解,我们正在从堆中分配内存到存储*p.

但现在考虑:

ClassName C;
Run Code Online (Sandbox Code Playgroud)

问题:如果不是从堆中,内存C来自哪里?

c++

-7
推荐指数
1
解决办法
127
查看次数

标签 统计

c++ ×3

c++-faq ×1

c++11 ×1

class ×1

instance ×1

memory-leaks ×1

new-operator ×1

pointers ×1