You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用指向vector的指针收集用户输入的double并打印?(代码段错误)

问题分析与修正方案

错误原因

  • 代码中声明的vector<double>* b是未初始化的野指针,它没有指向任何合法的vector对象,而是指向内存中的随机地址。
  • 调用b->push_back(i)时,程序会尝试通过这个野指针操作内存,属于非法内存访问,直接触发段错误。

正确实现方案

方案一:直接使用vector对象(推荐,无需指针)

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<double> b;
    for (double i; cin >> i;)
    {
        b.push_back(i);
    }

    for (double j : b)
    {
        cout << j << endl;
    }
    return 0;
}

直接定义vector对象,避免指针带来的野指针问题,代码更简洁安全,也不需要手动管理内存。

方案二:使用指针并正确初始化

如果一定要用指针,必须为其分配合法的内存空间,使用完后记得释放:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<double>* b = new vector<double>();
    for (double i; cin >> i;)
    {
        b->push_back(i);
    }

    for (double j : (*b))
    {
        cout << j << endl;
    }
    delete b; // 释放动态分配的内存,防止内存泄漏
    return 0;
}

内容的提问来源于stack exchange,提问作者Naghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:18:15