Попытка использовать JACK-AUDIO-CONNECTION-KIT от ржавчины (documentation), я столкнулся с проблемами, призывающихJack аудио имя клиента больше, чем 4-х символов ломает клиент
jack_client_t* jack_client_open ( const char * client_name,
jack_options_t options,
jack_status_t * status,
...)
ржавчиной Я использую
#[link(name = "jack")]
extern "C" {
pub fn jack_client_open(name: *const libc::c_char,
options: JackOptions,
status: &JackStatus)
-> *mut JackClientT;
}
Когда я использую name
с четырех персонажей его работ, например,
let name = CString::new("yass").unwrap().as_ptr();
, но если я использую 5 или более символов, это не сработает. В документах JACK, связанных выше, говорится, что имя может содержать не более int jack_client_name_size()
символов, что в моем случае равно 64. Почему это происходит?
Теперь имеет смысл, спасибо! Предупреждение в документах хорошее. Из предложения RFC кажется, что многие новички (как и я) борются с этим. Было бы разумно «поощрять» пользователей к использованию соглашения об именах для необработанных указателей, то есть выдавать предупреждение, если исходные указатели не заканчиваются на «* _ptr». Возможно, в конечном итоге это увеличит бдительность в отношении правильного управления памятью и побудит людей не полагаться на компилятор на ошибку, если что-то не так. Более продвинутые люди могут отключить предупреждение. – poidl