Hi /a/nons, I was trying to test something in Git Bash on Windows (which seems to have GCC) and the following C code gives me segfault:
#include <stdio.h>
void prueba(int* a)
{
int num = *a;
printf("Number is %d\n", num);
}
int main()
{
int* t;
*t = 6;
prueba(t);
}
any ideas why?
bupm
jajajajaja
>>60516825
ajajajajajjajajajjajaja /a/nons get the FUCK out
In main(), t is an uninitialized pointer. It points to some random area of memory. Try the following main() instead:
int *t;
int pointed_to;
t = &pointed_to;
*t = 6;
prueba(t);
>>60516906
it works now, what a foolish error lol, thank anon!
>>60516825
Maybe you should alloc the memory before using it.
int* t = malloc(sizeof(int));
>>60516906
>>60517001
This.
And also if you used -Wall option with GCC it would inform you that:test.c: In function ‘main’:
test.c:12:5: warning: ‘t’ is used uninitialized in this function [-Wuninitialized]
*t = 6;
~~~^~~
yes
c leaks memory
use rust instead :)
rust is the true anime language so its the best desuyo katakaradane senpai
>>60516825
>int* t;
>*t = 6;
Because you're writing in the memory address referenced from a pointer, t, which you never initialized. Allocate some sizeof(int) first.
>>60516825
do this señor#include <stdio.h>
prueba ( a )
int *a;
{
printf ("%d\n", *a);
}
main (void)
{
int t = 6;
prueba (&t);
}