初始化动态内存c ++

use*_*224 2 c++

在下面的代码中,我希望在数组1中的所有10元素中初始化x.但是,它似乎没有起作用.我可以知道我在这里缺少什么吗?

int main() {
int *x = new int[10];

for(int i =0; i <10; ++i){
    *x = 1;
    x++;
}

for(int i = 0; i < 10; ++i)
    std::cout<<i<<" is "<<x[i]<<std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Moh*_*ain 5

当您结束初始化循环时,您的x指向超出最后分配的元素.在第二个forloop之前,你需要重新调整x以指向内存的开始

x -= 10;
Run Code Online (Sandbox Code Playgroud)

更好的方法是将你的行走指针作为副本

int *xcopy = x;
for(int i =0; i <10; ++i){
    *xcopy = 1;
    xcopy++;
}
Run Code Online (Sandbox Code Playgroud)

或使用索引来更新值

for(int i =0; i <10; ++i){
    x[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)