unsafe_load

unsafe_load(p::Ptr{T},i::Integer)

Load a value of type T from the address of the ith element (1-indexed) starting at p. This is equivalent to the C expression p[i-1].

The unsafe prefix on this function indicates that no validation is performed on the pointer p to ensure that it is valid. Incorrect usage may segfault your program or return garbage answers, in the same manner as C.

Examples

# Load a value from a pointer
julia> ptr = pointer([10, 20, 30]);
julia> unsafe_load(ptr, 2)
20

# Accessing elements from a pointer to a struct
julia> struct Point
           x::Float64
           y::Float64
       end
julia> p = pointer(Point(2.0, 3.5));
julia> unsafe_load(p, 1).x
2.0
julia> unsafe_load(p, 1).y
3.5

In the first example, we use unsafe_load to load the value at the second element (index 2) of the pointer ptr. It returns the value 20.

In the second example, we define a struct Point and create a pointer p to an instance of Point. We then use unsafe_load to access the fields x and y of the struct at index 1 (the only element). It returns the respective values 2.0 and 3.5.

Note that unsafe_load is an unsafe function, and it does not perform any validation on the pointer p. It is crucial to ensure that the pointer is valid and points to the expected memory location to avoid program crashes or incorrect results.

See Also

assert, backtrace, code_llvm, code_lowered, code_native, code_typed, code_warntype, :@which, compilecache, current_module, eval, finalize, finalizer, fullname, function_module, function_name, include_dependency, InterruptException, invoke, isconst, isdefined, isgeneric, methodswith, method_exists, module_name, module_parent, require, subtypes, unsafe_load, workspace, __precompile__,

User Contributed Notes

Add a Note

The format of note supported is markdown, use triple backtick to start and end a code block.

*Required Field
Details

Checking you are not a robot: