我正在尝试使用Valgrind在此博客文章后检测Rust程序中的内存泄漏.我的源代码很简单:
#![feature(alloc_system)]
extern crate alloc_system;
use std::mem;
fn allocate() {
let bad_vec = vec![0u8; 1024*1024];
mem::forget(bad_vec);
}
fn main() {
allocate();
}
Run Code Online (Sandbox Code Playgroud)
我希望调用mem::forget()生成一个Valgrind可以接收的内存泄漏.但是,当我运行Valgrind时,它报告没有泄漏是可能的:
[memtest]> cargo run
Compiling memtest v0.1.0 (file:///home/icarruthers/memtest)
Finished dev [unoptimized + debuginfo] target(s) in 0.28s
Running `target/debug/memtest`
[memtest]> valgrind target/debug/memtest
==18808== Memcheck, a memory error detector
==18808== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==18808== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==18808== Command: target/debug/memtest
==18808== …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该LinearSVC对象进行以下简单分类scikit-learn.我尝试过同时使用0.10和0.14版本.使用代码:
from sklearn.svm import LinearSVC, SVC
from numpy import *
data = array([[ 1007., 1076.],
[ 1017., 1009.],
[ 2021., 2029.],
[ 2060., 2085.]])
groups = array([1, 1, 2, 2])
svc = LinearSVC()
svc.fit(data, groups)
svc.predict(data)
Run Code Online (Sandbox Code Playgroud)
我得到输出:
array([2, 2, 2, 2])
Run Code Online (Sandbox Code Playgroud)
但是,如果我用分隔符替换分类器
svc = SVC(kernel='linear')
Run Code Online (Sandbox Code Playgroud)
然后我得到了结果
array([ 1., 1., 2., 2.])
Run Code Online (Sandbox Code Playgroud)
哪个是对的.有谁知道为什么使用LinearSVC会破坏这个简单的问题?