假设我有以下代码:
struct obj{
int v;
obj(int i = 1){
v = i;
}
};
int main(){
vector<obj> v1(10); // (1)
vector<obj> v2(15); // (2)
}
Run Code Online (Sandbox Code Playgroud)
按上述:
Number (1) 创建一个具有 10 个实例的向量,obj默认为v=1。
数(2)如何将15作为参数发送给objso v=15???
我在网上搜索并在这个网站上找到了这篇文章,但它似乎是关于更高级的东西,作为一个新手,我没有明白它。
我看了一些关于 C++ 共享指针的教程,我有几个问题试图在互联网上找到答案,但没有运气。
考虑以下代码:
class A{
int v,u;
public:
A(){}
A(int p1, int p2): v(p1), u(p2) {}
~A(){};
};
void f()
{
shared_ptr<A> c(new A[5]);
// Is it correct that this causes a memory leak because...
//... the default deleter only deletes c[0] ?
// If yes, is this still true for C++17 and C++20 ?
shared_ptr<A> d(new A[5], [](A* ptr){ delete [] ptr;});
// how to pass non-default constructor argument in this case ?
}
int main(){
f();
} …Run Code Online (Sandbox Code Playgroud) c++ memory-leaks smart-pointers parameter-passing shared-ptr