У меня очень простая тестовая программа, работающая на Solaris 5.8:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *paths;
paths = getenv("PATH");
printf("Paths: %s\n", paths);
free(paths); // this causes a bus error
return 0;
}
Если я не позвоню free()
в конце, оно отображает сообщение нормально и завершается. Если я включаю вызов free()
, он падает с ошибкой шины. У меня были другие вызовы на free()
, в других программах также вызывали ошибки сегментации.
Даже если я выделю память для *paths
, free()
вызовет ошибку шины. Есть ли какая-то причина, по которой попытка освободить память вызывает сбой?