将auto_ptr <>与数组一起使用

bal*_*alu 15 c++ arrays auto-ptr

我正在使用auto_ptr<>它使用类指针类型的数组,所以我如何为它赋值.

例如 auto_ptr<class*> arr[10];

如何为arr数组赋值?

Arm*_*yan 17

你不能将auto_ptr与数组一起使用,因为它delete p不会调用delete [] p.

你想要boost :: scoped_array或其他一些boost :: smart_array :)

  • @ 0A0D:不,那不是真的.`int*a = new a [0]`必须删除`delete [] a`,而不是`删除a`,因此,有一个AP将导致UB (2认同)
  • @ 0A0D:不,将`auto_ptr`赋予0长度的数组是非法的(非法行为,如未定义的行为).原因很简单:如果一个指针已经通过调用"new []"返回,只用`delete`删除它会导致UB - 没有异常. (2认同)