Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。


17
当您在malloc之后不释放时,真正发生了什么?
多年来,这一直困扰着我。 我们都在学校里受教(至少在我以前是这样),您必须释放分配的每个指针。但是,对于不释放内存的实际成本,我有点好奇。在某些明显的情况下,例如在malloc循环或线程执行的一部分内调用when时,释放非常重要,这样就不会发生内存泄漏。但是,请考虑以下两个示例: 首先,如果我有这样的代码: int main() { char *a = malloc(1024); /* Do some arbitrary stuff with 'a' (no alloc functions) */ return 0; } 真正的结果是什么?我的想法是该过程终止,然后无论如何堆空间都消失了,因此错过该调用不会有任何危害free(但是,我的确意识到无论如何对于关闭,可维护性和良好实践而言,保持它的重要性)。我的想法对吗? 其次,假设我有一个程序有点像shell。用户可以声明类似的变量,aaa = 123并将这些变量存储在某种动态数据结构中以备后用。显然,显然您会使用一些可调用* alloc函数的解决方案(哈希映射,链接列表等)。对于这种程序,调用后永远释放是没有意义的,malloc因为这些变量必须在程序执行期间始终存在,并且没有很好的方法(我可以看到)用静态分配的空间来实现。分配一堆但仅在进程结束时释放的内存是不好的设计吗?如果是这样,还有什么选择?
538 c  malloc  free 




13
char s []和char * s有什么区别?
在C语言中,可以在这样的声明中使用字符串文字: char s[] = "hello"; 或像这样: char *s = "hello"; 那么区别是什么呢?我想知道在编译和运行时在存储持续时间方面实际发生了什么。
506 c  string  char  constants 

9
为什么sizeof(x ++)不增加x?
这是在dev c ++窗口中编译的代码: #include <stdio.h> int main() { int x = 5; printf("%d and ", sizeof(x++)); // note 1 printf("%d\n", x); // note 2 return 0; } 我预计x在执行注释1后将为6 。但是,输出为: 4 and 5 谁能解释为什么注释1x之后不增加?
505 c  sizeof 

12
什么是C中的“静态”功能?
问题是关于平原 C 功能,不是 C ++ static 方法,如注释中所阐明。 我了解什么是static变量,但是什么是static函数? 为何为什么要声明一个函数,void print_matrix比如说a.c(WITHOUT a.h)并包含"a.c"-我得到了"print_matrix@@....) already defined in a.obj",但是如果我声明了它,static void print_matrix那么它将被编译吗? 更新只是为了澄清问题- .c正如许多人所指出的那样,我知道包含内容是不好的。我只是暂时清除空间,main.c直到更好地了解如何将所有这些功能分为适当的文件.h和.c文件。只是一个临时的快速解决方案。

30
一个人如何用C编写面向对象的代码?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 用C编写面向对象的代码有哪些方法?特别是关于多态性。 另请参见此堆栈溢出问题,以C语言中的面向对象问题。
499 c  oop  object 


8
无符号整数与size_t
我注意到,现代C和C ++代码似乎在所有地方都使用/ size_t而不是使用-从C字符串函数的参数到STL。我对此的原因及其带来的好处感到好奇。intunsigned int
492 c++  c  size-t 





By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.