【问题标题】:glibc detected when trying to use cvCreateHist in C尝试在 C 中使用 cvCreateHist 时检测到 glibc
【发布时间】:2012-02-03 15:03:11
【问题描述】:

这是我的代码的一部分

int histsize=16;
float range=[0,255];
float* ranges[] = { range };
bool uniform=true;
CvHistogram* hist = cvCreateHist(1, &histsize, CV_HIST_ARRAY, ranges, uniform);

但是当我尝试执行 cvCreateHist 程序终止并抛出一个错误说 * 检测到 glibc malloc():内存损坏:0x083109b8 **

我正在使用 Eclipse,Ubuntu。请帮帮我。

【问题讨论】:

  • 那是C代码,你应该添加C标签。

标签: c image-processing ubuntu opencv histogram


【解决方案1】:

事实是,您的代码甚至不应该编译,因为这些行:

float range=[0,255];

bool uniform=true;1

在回答这个问题之前,我必须说,我认为你可以从这篇文章中受益匪浅:Writing the perfect question

我不知道您究竟想用该代码做什么,但以下编译并不会崩溃:

int histsize = 16;
float range[] = { 0, 255 };
float* ranges[] = { range };
bool uniform = true;
CvHistogram* hist = cvCreateHist(1, &histsize, CV_HIST_ARRAY, ranges, uniform);

【讨论】:

  • 那么 bool uniform=true;1 是一个错字。对此我很抱歉。但是这段代码在我创建的一个函数中,当我尝试编译它时,它失败了
  • 一开始你说你的代码崩溃了,现在你告诉我它不能编译。到底发生了什么?在添加其他评论之前阅读并测试我的答案中的代码。
  • 我很抱歉造成混乱 karl。代码确实崩溃了。我尝试了你的代码,作为独立代码它可以工作,但我无法理解的是为什么它会引发内存损坏错误在我使用时。
  • 可能是由于 float range=[0,255]; 导致 GCC 警告 lambda expressions only available with -std=c++0x or -std=gnu++0x 并在我的系统上发出一堆错误。
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 2012-06-07
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多