すごく初歩的な質問なんですが、
char * ptr = malloc(1024);
の後で
free(ptr);
をするときにサイズを指定しなくてもきちんとmallocした分が開放されるのでしょうか?
たとえmallocとfreeを別の関数の中で呼び出したとしても、ptrがキャストなどで違う型になっていても、いついかなるときでも大丈夫なのでしょうか?