-7 c++ variables pointers dynamic
假设我的指针没有指向数组,那么这个块是怎么回事:
int *ptr_a;
ptr_a = new int;
*ptr_a = 1;
Run Code Online (Sandbox Code Playgroud)
与以下不同:
int *ptr_a = 1;
Run Code Online (Sandbox Code Playgroud)
内存分配是否存在差异,何时使用其中一个?
int *ptr_a = 1;不创建新的int,这会创建一个指针ptr_a并为其赋值1,这意味着该指针将指向该地址0x00000001.它不是整数.如果您稍后尝试使用指针*ptr_a = 2,则会出现分段错误,因为指针未指向已分配的内存空间(在此精确的情况下,它指向内核内存,这是禁止的).
现在一个好的原则是使用std::unique_ptr<int> ptr_a = std::make_unique<int>(1)它将分配一个int带有值的new ,1并在一旦ptr_a超出范围时释放内存.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |