相关疑难解决方法(0)

如何解决munmap_chunk():C++中的指针错误无效

我在C++和OpenCV中有一个应用程序,它试图使用用SVMLight实现的分类模型,以便在OpenCV下添加可用于HOG Calssificator的权重值.

问题是,当我运行应用程序时,我收到此错误:

./main Converting Model file...
1%3%4%5%7%8%9%11%12%13%15%16%18%19%20%22%23%24%26%27%28%30%31%32%34%35%36%38%39%40%42%43%45%46%47%49%50%51%53%54%55%57%58%59%61%62%63%65%66%67%69%70%72%73%74%76%77%78%80%81%82%84%85%86%88%89%90%92%93%94%96%97%99%100%Skipped
line
*** glibc detected *** ./main: munmap_chunk(): invalid pointer:
0x09926218 ***
======= Backtrace: ========= /lib/libc.so.6(+0x6c501)[0xb6a3d501]
/lib/libc.so.6(+0x6d77e)[0xb6a3e77e]
/usr/lib/tls/libnvidia-tls.so.260.19.26(+0xa20)[0xb4116a20]
./main(_ZN9__gnu_cxx13new_allocatorIfE10deallocateEPfj+0x11)[0x804f7ab]
./main(_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfj+0x25)[0x804f075]
./main(_ZNSt12_Vector_baseIfSaIfEED2Ev+0x37)[0x804e9f1]
./main(_ZNSt6vectorIfSaIfEED1Ev+0x38)[0x804e46a]
./main[0x804bf65]
/lib/libc.so.6(__libc_start_main+0xe7)[0xb69e7ce7]
./main[0x804bd11]
======= Memory map: ======== 08048000-08052000 r-xp 00000000 08:01
27272122  
/home/roccog/HOGImplementation/HOGTrainer/main
08052000-08053000 r--p 00009000 08:01
27272122  
/home/roccog/HOGImplementation/HOGTrainer/main
08053000-08054000 rw-p 0000a000 08:01
27272122  
/home/roccog/HOGImplementation/HOGTrainer/main
098dd000-0994a000 rw-p 00000000 00:00
0          [heap] b2387000-b238d000
rw-p 00000000 00:00 0 
b238d000-b23dc000 r-xp 00000000 08:01
16386856   /usr/lib/libXt.so.6.0.0
b23dc000-b23dd000 r--p 0004e000 08:01
16386856   /usr/lib/libXt.so.6.0.0
b23dd000-b23e0000 rw-p 0004f000 …
Run Code Online (Sandbox Code Playgroud)

c++ memory opencv memory-leaks

39
推荐指数
2
解决办法
13万
查看次数

面对错误"***glibc detect***free():无效下一个尺寸(快)"

请参阅MSO问题可能重复的长列表 - C内存分配和超限界限,以获取有关密切相关问题的信息.


开发人员环境:CentOS 4.7,Kdevelop 3.1.1,gcc 3.4.6

我运行一个Java测试客户端,使用JNI加载C++共享库.我的应用程序有三个组件,

  1. Java客户端
  2. C++共享库,充当JNI包装器.(我称之为"wrapperlibrary")
  3. 包含业务对象的C++共享库.(我称之为"businesslibrary")

当我运行客户端时,我经常遇到错误,即*** glibc detected *** free(): invalid next size (fast): 0x080eeef8 ***.此错误大约10到11次,然后应用程序运行.

在我的Java客户端中,我首先在静态ctor中加载所需的C++库,如下所示,

static
{
System.Load("/root/Desktop/libs/businesslibrary");
System.out.println("business library loaded");
System.Load("/root/Desktop/libs/wrapperlibrary");
System.out.println("wrapper library loaded");
}
Run Code Online (Sandbox Code Playgroud)

"业务库已加载"语句将打印在控制台上,但之后会出现错误*** glibc....

在wrapperlibrary的项目设置中,businesslibrary被指定为依赖库.所以,即使我省略了加载businesslibrary并且只是写的调用,

static
{
System.Load("/root/Desktop/libs/wrapperlibrary");
System.out.println("wrapper library loaded");
}
Run Code Online (Sandbox Code Playgroud)

然后首先加载businesslibrary(通过全局变量创建日志记录看到),然后加载wrapperlibrary.控件返回到java客户端,并在控制台上打印语句"wrapper library loaded".在此之后,调用本机方法.但控件永远不会达到这种本机方法的实现.而在此之前,错误*** glibc...再次出现.另外如果我在本机方法调用之前插入对另一个java类的静态方法的调用,例如,

static
{
 System.Load("/root/Desktop/libs/wrapperlibrary");
 System.out.println("wrapper library loaded");
 System.out.println(Try.temp()); //where temp is a static method of Try class which returns a string.

 native method call;

 -- …
Run Code Online (Sandbox Code Playgroud)

linux java-native-interface centos

12
推荐指数
1
解决办法
2万
查看次数