总结一下在工作中遇到的一个问题。‘
有以下四种vector的声明。
分别为:
vector vec;
vector vec;
vector * vec;
vector * vec;
那具体有什么区别呢?在使用中又需要注意什么?
首先,我们要区分一下在堆和栈上申请的内存有什么特点。
总之:需要持久化保存对象或数据时,最好在堆上new一块内存出来,返回的指针可以被保存和操作
新手经常会犯的一个错误:往往在栈上为对象申请了内存后,在其作用域外去使用它,比如某个函数的参数引用了这个对象,或在另一个对象的构造函数中引用了这个对象,最后却都无法调用这个对象的信息。因为在其作用域外,这个对象已经出栈了,无法被引用到,也无法传值。
之后我们可以根据这些特点分别分析一下不同内存空间上的vector及内部不同内部空间的特点。
vector vec;
vector vec;
vector * vec;
vector * vec;
在栈上申请的vector,保存着指向test对象的指针。
在栈上申请的vector,保存着test对象。
在堆上申请的vector, 保存着test对象。
在堆上申请的vector, 保存着指向test对象的指针。
上一篇:先验 后验 似然估计
下一篇:JAVA数据类型与变量