标签: c

如何使用C或C++获取目录中的文件列表?

如何从C或C++代码中确定目录中的文件列表?

我不允许执行ls命令并从我的程序中解析结果.

c c++ directory file

547
推荐指数
14
解决办法
82万
查看次数

静态库和共享库之间的区别?

静态库和共享库有什么区别?

我使用Eclipse,有几种项目类型,包括静态库和共享库?一个人比另一个人有优势吗?

c c++ shared-libraries static-libraries

533
推荐指数
8
解决办法
22万
查看次数

什么是分段错误?

什么是分段错误?C和C++有什么不同吗?分段错误和悬空指针是如何相关的?

c c++ segmentation-fault

530
推荐指数
9
解决办法
55万
查看次数

如何在C中生成随机int?

是否有在C中生成随机int数的函数?或者我必须使用第三方库吗?

c random

527
推荐指数
11
解决办法
154万
查看次数

当你在malloc之后没有自由时真正发生了什么?

这已成为困扰我多年的事情.

我们都在学校(至少,我是)教过你必须释放每个分配的指针.不过,我有点好奇,关于不释放内存的实际成本.在一些明显的情况下,就像在malloc循环内部或线程执行的一部分中调用时一样,释放是非常重要的,因此没有内存泄漏.但请考虑以下两个例子:

首先,如果我的代码是这样的:

int main()
{
    char *a = malloc(1024);
    /* Do some arbitrary stuff with 'a' (no alloc functions) */
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里真正的结果是什么?我的想法是,进程死了,然后堆空间无论如何都没有了,因此错过调用没有任何害处free(但是,我确实认识到无论如何都要将它关闭,可维护性和良好实践的重要性).我对这个想法是对的吗?

其次,假设我的程序有点像shell.用户可以声明类似的变量,aaa = 123并将其存储在某些动态数据结构中供以后使用.很明显,你可以使用一些解决方案来调用一些*alloc函数(hashmap,链表,类似的东西).对于这种程序,在调用之后永远自由是没有意义的,malloc因为这些变量必须在程序执行期间始终存在,并且没有好的方法(我可以看到)用静态分配的空间来实现它.拥有一堆已分配但仅作为流程结束的一部分释放的内存,这是不好的设计吗?如果是这样,有什么替代方案?

c malloc free

515
推荐指数
12
解决办法
11万
查看次数

除非换行符在格式字符串中,为什么printf在调用后不会刷新?

printf除非换行符在格式字符串中,为什么在调用后不刷新?这是POSIX的行为吗?我怎么可能printf每次都立即冲洗?

c printf flush

509
推荐指数
10
解决办法
33万
查看次数

508
推荐指数
8
解决办法
5万
查看次数

499
推荐指数
5
解决办法
53万
查看次数

char s []和char*s有什么区别?

在C中,可以在声明中使用字符串文字,如下所示:

char s[] = "hello";
Run Code Online (Sandbox Code Playgroud)

或者像这样:

char *s = "hello";
Run Code Online (Sandbox Code Playgroud)

那么区别是什么呢?我想知道在编译和运行时的存储持续时间实际发生了什么.

c string constants char

495
推荐指数
6
解决办法
33万
查看次数

为什么sizeof(x ++)不增加x?

这是在dev c ++ windows中编译的代码:

#include <stdio.h>

int main() {
    int x = 5;
    printf("%d and ", sizeof(x++)); // note 1
    printf("%d\n", x); // note 2
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

x执行注释1后,我希望是6 .但是,输出是:

4 and 5
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么x在注1后没有增加?

c sizeof

494
推荐指数
7
解决办法
3万
查看次数