macro_rules! yaml_realloc {
($ptr:expr, $t:ty, $size:expr) => { ... };
}Expand description
Reallocates memory using the system’s realloc function.
This macro wraps the yaml_realloc function, providing a more Rust-like interface.
§Arguments
ptr- A pointer to the memory block to reallocate.size- The new size of the memory block in bytes.
§Returns
Returns a *mut T pointer to the reallocated memory, or None if the reallocation failed.
§Safety
While this macro provides a safer interface than direct use of yaml_realloc,
it is still unsafe because:
- It may move the memory to a new location.
- The caller must ensure that
ptrwas previously allocated byyaml_malloc!oryaml_realloc!. - The caller is responsible for properly freeing the reallocated memory using
yaml_free!. - The contents of the reallocated memory beyond the original size are undefined.
§Examples
use libyml::{yaml_malloc, yaml_realloc, yaml_free};
unsafe {
let mut size = 1024;
if let Some(mut ptr) = yaml_malloc!(u8, size) {
// Use the allocated memory
// ...
size = 2048;
if let Some(new_ptr) = yaml_realloc!(ptr, u8, size) {
ptr = new_ptr;
// Use the reallocated memory
// ...
yaml_free!(ptr);
}
}
}