我从jasmine获取示例代码并在本地编译,编译如下:
Base::Base()
Derived::Derived()
Created a shared Derived (as a pointer to Base)
p.get() = 0x608029, p.use_count() = 1
Segmentation fault
当我运行它时,我得到以下输出:
function R = inPainting(I, mask)
H = [1 2 1; 2 0 2; 1 2 1];
R = I;
n = 1;
[row,col,~] = find(~mask); %Find zeros in mask (area to be inpainted)
unknown = horzcat(row, col)';
while size(unknown,2) > 0
new_unknown = [];
new_R = R;
for u = unknown
r = u(1);
c = u(2);
nb = R(max((r-n), 1):min((r+n), end), max((c-n),1):min((c+n),end));
nz = nb~=0;
nzs = sum(nz(:));
if nzs ~= 0 %We have non-zero neighbouring pixels. In-paint with average.
new_R(r,c) = sum(nb(:)) / nzs;
else
new_unknown = horzcat(new_unknown, u);
end
end
unknown = new_unknown;
R = new_R;
end
知道为什么会出现seg故障吗?
我对C ++很新,你通常会如何调试它?
谢谢!
答案 0 :(得分:2)
如果您逐字使用链接页面中的源代码,建议更改命令行:
-std=c++11
或-std=c++14
。pthread
库并使编译器可识别线程。g++ -Wall -std=c++11 -pthread my_file.cpp
g++ -Wall -std=c++14 -pthread my_file.cpp
答案 1 :(得分:0)
该示例遇到“基类没有基类上的虚析构函数”问题。当使用指向Base的指针销毁Derived对象时,代码只需调用Base的析构函数。这是Bad Thing(TM)