使用caffe分割错误
Segmentation error with caffe
我在Windows上使用caffe,并且我无法确定的分割错误。它发生在程序退出时,WinDbg说scalar deleting destructor
,不知道内存分配在哪里。我的完整代码(目前是一个虚拟代码,试图缩小范围,但它只是偶尔发生):
#include <string>
#include <vector>
#include "boost/algorithm/string.hpp"
#include "google/protobuf/text_format.h"
#include <stdio.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include "caffe/blob.hpp"
#include "caffe/common.hpp"
#include "caffe/net.hpp"
#include "caffe/proto/caffe.pb.h"
#include "caffe/util/db.hpp"
#include "caffe/util/format.hpp"
#include "caffe/util/io.hpp"
using caffe::Blob;
using caffe::Caffe;
using caffe::Datum;
using caffe::Net;
using std::string;
namespace db = caffe::db;
int main(int argc, char** argv) {
// Initialize logging with program call. First thing that needs to be done
::google::InitGoogleLogging(argv[0]);
cv::Mat mean_;
// Set Caffe to run in CPU only mode
Caffe::set_mode(caffe::Caffe::CPU);
std::vector<std::string> labels_;
/*std::shared_ptr<Net<float>> caffe_test_net;*/
Net<float>* caffe_test_net;
caffe_test_net = new Net<float>("D:\Development\caffe-windows\models\bvlc_reference_caffenet\deploy.prototxt", caffe::Phase::TEST);
caffe_test_net->CopyTrainedLayersFrom("D:\Development\caffe-windows\models\bvlc_reference_caffenet\bvlc_reference_caffenet.caffemodel");
delete caffe_test_net;
return 1;
}
我已经在一个unique或shared_ptr中测试了caffe_net,但这根本没有区别。我不知道如何找到手头的问题。
" sometimes"是一个非常常见的未定义行为,这是你真正遇到的。从理论上讲,分割错误是计算机可能会做的无数事情之一,其行为实际上是未定义的。换句话说,就像他们在USENET上说的:"编译器让恶魔从你的鼻子里飞出来是合法的。"它可能会工作,它可能会做一些奇怪的事情,或者它可能会抛出一些严重的错误,如段错误。
有专门用于跟踪分段错误和其他内存错误的工具。在Linux系统上,它通常是Valgrind,而在Windows系统上,你会使用Dr. Memory。只要你用包含的调试符号(-g
)编译,当你通过Dr. Memory运行可执行文件时,它应该会给你一个分段错误的堆栈跟踪。
一旦你得到堆栈跟踪,检查它的顶部,看看代码在抱怨哪个析构函数,或者至少,main.cpp
中的哪一行代码调用了负责未定义行为的函数。
同样,根据你的编译器,你可能会遇到VC中已知的错误。
您可以在此答案中找到有关分段错误,常见原因以及如何调试它们的更多一般信息。
相关文章:
- C++映射分割错误(核心转储)
- 由cin中的字符串中未捕获空白引起的分割错误
- 删除映射和分割错误中的一个过去结束元素
- 在指向函数中读取变量时出现分割错误
- 在链表中的第 n 位插入显示分割错误
- 较高值 n 的分割错误(例如 n=999997)
- 尝试通过memcpy复制大尺寸浮点向量时的分割错误
- 分割错误:向量中的擦除功能
- 向量向量的分割错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 集合布局上的 Qt 分割错误
- 高达20亿的筛子会产生分割错误
- G :内部编译器错误:分割故障(程序CC1PLUS) - 我在哪里开始
- 二进制搜索树操作程序错误:分割故障(核心倾倒)
- 在给出正确的输出后,给出错误分割错误(核心转储)
- 得到错误分割错误(核心转储)进程返回139 (0x8B)
- 内部编译错误:分割错误在gcc.发送可变模板到struct时