chu*_*son 1 c pointers memory-management
我有一个非常简单的测试程序,在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;
}
Run Code Online (Sandbox Code Playgroud)
如果我free()最后没有打电话,它会显示消息并退出.如果我包含该free()呼叫,它会因总线错误而崩溃.free()在其他程序中,我还有其他调用也会导致分段错误.
即使我为*paths自己分配内存,free()也会导致总线错误.是否有某些原因试图释放内存导致崩溃?