首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >boost::program_options::positional_options_description终端

boost::program_options::positional_options_description终端
EN

Stack Overflow用户
提问于 2011-05-16 00:56:46
回答 2查看 1.3K关注 0票数 2

下面的程序使用pointer being freed was not allocated中止

代码语言:javascript
运行
复制
#include <boost/program_options.hpp>

int main(int argc, char* argv[])
{
    boost::program_options::positional_options_description positional;
    return 0;
}

我在OSX10.6.7上编译了该程序并将其与Boost 1.46.1连接起来,我将其内置到/usr/local中。我找不到任何已安装的libboost_program_options,除了我(应该)链接的那个。

知道是什么导致了这次坠机吗?

编辑:关于堆栈跟踪,程序

代码语言:javascript
运行
复制
#include <boost/program_options.hpp>
#include <execinfo.h>

int main(int argc, char* argv[])
{
    boost::program_options::positional_options_description positional;
    void* callstack[128];
    int i, frames = backtrace(callstack, 128);
    char** strs = backtrace_symbols(callstack, frames);
    for (i = 0; i < frames; ++i) {
        printf("%s\n", strs[i]);
    }
    free(strs);
    return 0;
}

建为

代码语言:javascript
运行
复制
g++ -Wp,-MMD,.make-debug/main.dd -Wall -g3 -I/usr/local/include -c main.cc -o .make-debug/main.o
g++ -o sandbox .make-debug/main.o -lboost_program_options -L/usr/local/lib 

并在./sandbox生成输出时运行

代码语言:javascript
运行
复制
0   sandbox                             0x00000001000017bf main + 57
1   sandbox                             0x0000000100001764 start + 52
2   ???                                 0x0000000000000001 0x0 + 1
sandbox(50587) malloc: *** error for object 0x7fff70506500: pointer being freed was not al
located
*** set a breakpoint in malloc_error_break to debug

Command terminated

至于建造助推器:

代码语言:javascript
运行
复制
$ cd boost_1_46_1
$ ./bootstrap.sh --prefix=/usr/local
$ ./bjam toolset=darwin-4.2

这是我的~/user-config.jam:

代码语言:javascript
运行
复制
using darwin : 4.0 : g++-4.0 ;
using darwin : 4.2 : g++-4.2 ;
using darwin : 4.5.1 : /Users/matan/usr/bin/g++ ;
EN

回答 2

Stack Overflow用户

发布于 2011-05-16 01:02:02

我无法复制

代码语言:javascript
运行
复制
macmini:stackoverflow samm$ cat po.cc
#include <boost/program_options.hpp>
#include <boost/version.hpp>

#include <iostream>

int
main(int argc, char* argv[])
{
    std::cout << BOOST_LIB_VERSION << std::endl;
    boost::program_options::positional_options_description positional;
    return 0;
}
macmini:stackoverflow samm$ g++ -I /opt/local/include -L/opt/local/lib -lboost_program_options po.cc
macmini:stackoverflow samm$ ./a.out
1_46_1
macmini:stackoverflow samm$ 

您应该用构建boost的步骤来更新您的问题,特别是bjam的参数。

票数 2
EN

Stack Overflow用户

发布于 2011-05-21 19:35:55

我想我解决了这个问题,但我对我的解决办法不满意。我没有提到,我以前安装了gcc 4.6.0,带有--程序后缀=-4.6 in /usr/local。卸载和重建Boost解决了这个问题。然后,除了XCode附带的gcc-4.0和gcc-4.2之外,我没有安装任何编译器。据推测,gcc-4.6文件干扰gcc-4.0文件或达尔文工具集.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6012337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档