Uninitialized Pointer Works?

Hari ini baru coba beberapa operasi string dengan C\Cpp (lagi), baru sadar pointer karakter di C bisa dipakai walau belum dialokasikan (asal udah diisi aja)

Awalnya begini
#include <stdio.h>
#include <string.h>
int main(){
char *this;
strcpy(this,"this is uninitialized");
printf("%s\n",this);
return(0);
}

Keluarannya lagsung SEGFAULT

Selanjutnya:
#include <stdio.h>
#include <string.h>
int main(){
char *this;
strcpy(this,"this is uninitialized");
char *that;
printf("%s\n",this);
return(0);
}

Keluarannya, "this is unintialized" bakal tampak, tapi habis itu baru SEGFAULT.

Diisengin dikit:
#include <stdio.h>
#include <string.h>
int main(){
char *this;
strcpy(this,"this is uninitialized");
char *that;
strcpy(that,"so is this");
printf("%s %s\n",this,that);
return(0);
}

Langsung SEGFAULT (tapi beneran, tadi bisa lebih kacau dari yang kedua)

Moral: selalu inisialisasi pointer yang kamu pakai :D (tapi kok perasaan ga penting banget kaya begini)

0 rants:

Posting Komentar