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

Windows Conda环境下boost::program_options报Bad Allocation错误求助

Windows下Conda环境+VS2019编译Boost Program Options程序报错问题

环境与代码

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyProject)

find_package(Boost REQUIRED COMPONENTS program_options)

include_directories(${Boost_INCLUDE_DIRS})

add_executable(my_program po_demo.cpp)
target_link_libraries(my_program Boost::program_options)

示例应用代码

#include <iostream>
#include <boost/program_options.hpp>

namespace po = boost::program_options;

int main(int argc, char** argv) {
    try {
        po::options_description desc("Allowed options");
        desc.add_options()
            ("help", "produce help message")
            ("input-file", po::value<std::string>(), "set input file")
            ("output-file", po::value<std::string>(), "set output file")
            ("verbose,v", "enable verbose output")
            ("optimization-level", po::value<int>()->default_value(0), "set optimization level")
        ;

        po::variables_map vm;
        po::store(po::parse_command_line(argc, argv, desc), vm);
        po::notify(vm);

        if (vm.count("help")) {
            std::cout << "Usage: program_name [options]\n";
            std::cout << desc;
            return 0;
        }

    } catch (const po::error& ex) {
        std::cerr << "Error: " << ex.what() << std::endl;
        return 1;
    } catch (std::exception ex) {
        std::cerr << "Error: " << ex.what() << std::endl;
        return 1;
    }
    catch (...) {
        std::cerr << "Error unknown" << std::endl;
        return 1;
    }

    return 0;
}

操作步骤(在miniforge3提示符下执行)

conda create -n potest
conda activate potest
conda install cxx-compiler libboost-devel cmake make

mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% -G "Unix Makefiles" ..

make

错误现象

  • 编译完成后运行程序,第一行即抛出错误:Error: bad allocation
  • 将po::options_description desc("Allowed options");修改为无参构造po::options_description desc;后,程序可运行至po::notify(vm);处,此时抛出错误:Error: vector too long,同时弹出系统错误对话框

补充:CMake已成功检测到环境中的Boost库,通过dumpbin工具确认编译后的程序依赖boost_program_options.dll等文件。

疑问

  1. 上述场景是否本应正常运行?
  2. Conda安装的Boost库与当前使用的VS2019编译器是否存在兼容性问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:22:08