This is about the third or fourth thread you have posted with fundamentally broken pointer usage in it, which suggests you need to spend some time and revise pointers and addressing in C.
At the moment triad is just a pointer (ie. a single unsigned 32 or 64 bit integer which can hold an address). You have told the compiler it will point to some memory containing uint3 values. But you have never declared or reserved any memory and given that address to triad. Which is why you get a warning that you are using it before it is set and then why it segfaults - you are trying to use the random contents of triad as an address, and it isn’t valid.