Вот от getcwd(3)
:
DESCRIPTION
The getcwd() function copies the absolute pathname of the current working
directory into the memory referenced by buf and returns a pointer to buf.
The size argument is the size, in bytes, of the array referenced by buf.
If buf is NULL, space is allocated as necessary to store the pathname.
This space may later be free(3)'d.
То есть - установите buf
на NULL
и free(3)
на dir
, когда закончите; ИЛИ выделите место для buf
самостоятельно (поскольку вы говорите getcwd(3)
, что у вас там 1 КБ).
Edit:
Так что, чтобы немного почистить, можно либо:
char *dir = getcwd( NULL, 0 );
if ( dir == NULL ) { /* handle error */ }
/* use dir */
free( dir );
или
char buf[1024]; /* or allocate it with malloc(3) */
if ( getcwd( buf, 1024 ) == NULL ) { /* handle error */ }
/* use buf, DO NOT free it if it's on the stack or static,
only if malloc-ed */