相关疑难解决方法(0)

C++中的堆栈或堆中的全局内存管理?

如果我在C++应用程序中全局声明数据结构,它是否会消耗堆栈内存或堆内存?

例如

struct AAA
{

.../.../.
../../..
}arr[59652323];
Run Code Online (Sandbox Code Playgroud)

c++ stack memory-management

70
推荐指数
6
解决办法
6万
查看次数

为什么在创建具有关联指针的对象时使用'new'?

我正在通过阅读教科书来学习C++."对象和指针"部分说,声明指向对象的指针,如下所示:

SomeClass *ptrMyClass;
Run Code Online (Sandbox Code Playgroud)

什么都不做.只有在定义了Class的实例之后才有意义,如下所示:

SomeClass *ptrMyClass;
ptrMyClass = new SomeClass;
Run Code Online (Sandbox Code Playgroud)

或者将这些组合在一起:

SomeClass *ptrMyClass = new SomeClass;
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么我们必须使用'new'在堆上创建SomeClass的实例?到目前为止,在本书中,指针始终指向"正常"变量(如int,float ...),这些变量不是通过使用"new"创建的.谢谢.

c++ heap pointers object

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

对象和实例之间的区别:C++

我在SO上发表了一些帖子,最后我得出的结论是,当我们有类似的东西:

Person name;
Run Code Online (Sandbox Code Playgroud)

name是一个阶级的对象person.

它实例化时成为实例:

name=new Person();
Run Code Online (Sandbox Code Playgroud)

我是C++的初学者,到目前为止我已经看到我们可以访问函数和变量,如:

Person name;
name.getValue;
name.callFunction();
Run Code Online (Sandbox Code Playgroud)

我们不需要使用new运算符.那么我们可以说在C++中可以忽略对象和实例之间的区别因素吗?

c++ oop object instance

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

C++中的内存组织

我一直在阅读有关如何在C++中分配内存的内容.

一些资源要提到:

http://www.geeksforgeeks.org/memory-layout-of-c-program/

http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory

堆栈/堆上的对象创建?

C++中的堆栈或堆中的全局内存管理?

http://msdn.microsoft.com/en-us/library/vstudio/dd293645.aspx

堆/堆栈和多个进程

不同的程序是从公共堆还是从单独的堆中获取内存?

http://computer.howstuffworks.com/c28.htm

在此输入图像描述

我想根据我的阅读澄清几点:

根据http://www.geeksforgeeks.org/memory-layout-of-c-program/第4节堆栈"存储自动变量的堆栈,以及每次调用函数时保存的信息"

假设:

class myClass{
  int a;
  char b;
  public:
  myClass(int a,char b)
  {
   this->a = a;
   this->b = b;
  } 
};
Run Code Online (Sandbox Code Playgroud)

1)根据我所读到的,当我们编译这段代码时,二进制文件位于程序存储器中,并且还没有在堆栈上分配任何内容.正确?

现在在我的主要:

int main()
{
 myClass Ob(1,'c');
 return 0;
} 
Run Code Online (Sandbox Code Playgroud)

2)现在在堆栈上创建一个大小为5字节(4字节(整数),1字节(字符) - 32位OS)的对象Ob,因为它是一个自动变量.正确吗?

3)当myClass(int a,char b)调用构造函数时,临时变量(参数a,b)是否在构造函数的堆栈上创建,然后在创建对象Ob后销毁?就像我们通过按值传递参数来调用函数一样.

现在假设另一个班级

class pointerClass {
 int a;
 char* b;
 public:
 pointerClass(int size){
 b= new char[size];
 a=size;
 }
}; 
Run Code Online (Sandbox Code Playgroud)

现在主要:

int main()
{
 pointerClass ptr(10) ; //Step 1
}
Run Code Online (Sandbox Code Playgroud)

4)这是否意味着大小为8字节的ptr对象(int …

c++ compiler-construction

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

使用"new"创建对象与创建对象之间的区别.

这两个陈述有什么区别?

stringstream *myStream = new stringstream(s);
Run Code Online (Sandbox Code Playgroud)

stringstream myStream(s);  
Run Code Online (Sandbox Code Playgroud)

我听说首先返回一个指针并"动态"分配内存.但我真的不明白其中的区别.

先感谢您

c++ object

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

带有"new"的指针和带有"&variable"的指针之间有什么区别

我有一个简单的问题,但有时候我有点困惑.

第一个代码:

Person *ptoPerson = new Person;
cout << ptoPerson->printMsg("Hi") << endl;
delete ptoPerson;
Run Code Online (Sandbox Code Playgroud)

第二个代码:

Person p;
Person *ptoPerson = &p;
cout << ptoPerson->printMsg("Hi") << endl;
delete ptoPerson;
Run Code Online (Sandbox Code Playgroud)

删除指针时会发生此问题.
第一个代码工作正常,指针删除,但第二个代码在实现它时出现问题在运行时.

为什么第二个代码无法删除指针?
我认为这两种情况下的指针是一个指针,可以删除它,或者我错了.

c++ pointers

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