小编Bia*_*Cao的帖子

new int[100] 和 new int[100]() 的区别;

如题

#include <iostream>
int main() {
    auto* a = new float[1000000];
    auto* b = new float[10]();
    for(auto i=0; i<1000000; i++){
        std::cout << "a" << a[i] << std::endl;
    }
    for(auto i=0; i<10; i++){
        std::cout << "b" << b[i] << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有什么不同?我试过两个输出都是零。

另外关于智能指针,如何确保它可以零初始化。

std::unique_ptr<int[]> p = std::make_unique<int[]>(100);
Run Code Online (Sandbox Code Playgroud)

c++ initialization new-operator unique-ptr c++11

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

std::move 可以移动内置类型或 C 指针或数组吗

我有 3 个问题:

  1. 可以std::move移动内置类型吗?
int a = 10;
int b = std::move(a);
Run Code Online (Sandbox Code Playgroud)

a是无效值吗?


  1. 可以std::move移动指针
int *a = new int[10];
int *b = std::move(a);
Run Code Online (Sandbox Code Playgroud)

a变成无效指针还是nullptr


  1. 可以std::move移动ac阵列吗?
struct S {
  int array[10];
}
S a;
for(int i=0; i<10; i++)
  a.array[i]=1;
S b;
b = std::move(a);
Run Code Online (Sandbox Code Playgroud)

a.array变成无效数组吗?

c++ c++11 stdmove

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

标签 统计

c++ ×2

c++11 ×2

initialization ×1

new-operator ×1

stdmove ×1

unique-ptr ×1