Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 超过4个字符的Jack音频客户端名称会中断客户端_Rust_Ffi_Jack - Fatal编程技术网

Rust 超过4个字符的Jack音频客户端名称会中断客户端

Rust 超过4个字符的Jack音频客户端名称会中断客户端,rust,ffi,jack,Rust,Ffi,Jack,尝试使用Rust()中的JACK-AUDIO-CONNECTION-KIT时,调用时遇到问题 jack_client_t*jack_client_open(const char*client_name, jack_options_t options, 杰克的状态, ... ) 我用的是铁锈 #[link(name = "jack")] extern "C" { pub fn jack_client_open(name: *const libc::c_char,

尝试使用Rust()中的JACK-AUDIO-CONNECTION-KIT时,调用时遇到问题

jack_client_t*jack_client_open(const char*client_name,
jack_options_t options,
杰克的状态,
... )   
我用的是铁锈

#[link(name = "jack")]
extern "C" {
    pub fn jack_client_open(name: *const libc::c_char,
                        options: JackOptions,
                        status: &JackStatus)
                        -> *mut JackClientT;
}
()

当我使用带有四个字符的
名称时,它会起作用,例如

let name = CString::new("yass").unwrap().as_ptr();

但是如果我使用5个或更多的字符,它就不起作用了。在上面链接的JACK文档中,它表示名称最多可以是
int JACK\u client\u name\u size()
个字符,在我的例子中是64个字符。为什么会发生这种情况?

让name=CString::new(“yass”).unwrap().as_ptr()分配字符串,获取指向该字符串的指针。。。然后扔掉绳子,这样你就可以免费使用了。不要这样做。Write
let name=CString::new(“yass”).unwrap()
,然后使用
name.as\u ptr()
。另见和RFC建议书


欢迎提出任何改进文档的建议。

现在就有意义了,谢谢!文档中的警告是好的。从RFC的建议来看,似乎很多初学者(像我一样)都在努力解决这个问题。“鼓励”用户对原始指针使用命名约定是否有意义,即如果原始指针未以“*\u ptr”结尾,则发出警告。从长远来看,这可能会提高人们对正确内存管理的警觉性,并在出现错误时提示人们不要依赖编译器出错。更多的高级人员可以禁用该警告。