我在C中简单程序中的内存故障
Memory fault in my simple program in C
当我像./a.out一样运行我的应用时,我有一个错误:我像:GCC Test1.c一样编译我的应用程序。内存故障
我的代码是
int main (void)
{
DIR *dp;
struct dirent *ep;
const char *path_dir ="/home/risorse/ae23054/Giuseppe";//Inserire la directory qui
dp = opendir (path_dir);
if (dp != NULL)
{
while (ep = readdir (dp)){
printf(ep->d_name);
char nome_file[256];
strcpy(nome_file,ep->d_name);
FILE *fd=fopen(nome_file, "a+");
fprintf(fd,"nEXIT");
fclose(fd);
}
(void) closedir (dp);
}
else
perror ("Non posso aprire la directory");
return -1;
}
谢谢
您使用fopen结果而不检查它是无效的。
如果您的当前目录不是path_dir
,并且您当前的工作目录不包含具有与path_dir
上文件相同的文件,则fopen
将返回null。
您的程序很可能会崩溃,因为您在尝试使用它之前不检查返回值(在以下fprintf
和fclose
调用中。
可能的解决方案可能是在尝试fopen
文件之前更改为目录。这意味着您获得了预期的行为。虽然,如果您在获得目录输入后立即删除/移动文件,您仍然需要检查NULL。
...
dp = opendir (path_dir);
if (dp != NULL)
{
fchdir(dirfd(dp));
...
相关文章:
- 当新的故障时,是否有必要留出一些紧急内存?
- 带升压的 SEG 故障::make_shared / 特征3 内存.h.
- 需要帮助对内存泄漏源进行故障排除 - C++
- 内存集分段故障内核转储
- 将内存分配给指针数组时SEG故障
- 插入std :: basic_ostream实例化输出时的内存故障
- 分割内存位置后,将内存分配给MALLOC()时分割故障
- Linux共享内存,带有C :分段故障
- 低内存会导致本机代码中的SEG故障
- 向量交换的向量中的分割故障,将内存分配给指针为向量的向量
- C noExcept对于不引发异常的函数,可能会导致内存故障
- 我在C中简单程序中的内存故障
- 谁处理C++ "new"内存分配故障?
- 安全使用 vector.emplace_back( 新的 MyPointer );矢量内部的故障是否会导致内存泄漏
- 使用常量字符*时出现内存故障
- 正在从内存不足故障中恢复
- "detects_simple_anagram"中的致命错误:地址 0x00000000 处的内存访问冲突:故障地址处没有映射
- 内存耗尽会导致分段故障吗?
- C++ 模板功能<queue>中的内存故障
- Boost进程间共享内存故障