8得票5回答
在虚拟机中开发和测试内核

我喜欢编程挑战,编写内核似乎是一项挑战。 不幸的是,内核特别难以测试,因为它们基本上是操作系统的核心,所以不能轻易地在操作系统之上运行。 然而,我知道有一种叫做虚拟机的应用程序,可以模拟计算机硬件。 使用虚拟机开发和测试内核(C + Assembly)的最简单/最佳方法是什么?

7得票8回答
如何优雅地处理malloc错误,而不需要在每个malloc调用后都检查是否返回了NULL?

在我的代码中,几乎每个函数都有一个或多个malloc调用,每次我都需要做类似以下的事情: char *ptr = (char *)malloc(sizeof(char) * some_int); if (ptr == NULL) { fprintf(stderr, "failed t...

9得票2回答
void* 字面上是浮点型,如何进行类型转换?

我在我的C++应用程序中使用了这个C库,其中一个函数返回一个void*。虽然我不是很精通纯C,但听说void*可以转换为几乎任何其他类型的指针。我也知道我期望从这个函数中得到一个float。 因此,我将void*强制转换为float*并解引用float*,结果崩溃了。太糟糕了!我调试代码,在...

7得票7回答
从C++降级到C:std::map的替代方案是什么?

我正在寻找一种替代std::map<long, int>的极简方案,它将用于Windows内核驱动程序,因此应该非常快速。它预计将保存相对较小(工作集中的约200个)的键和大量插入操作。 我正在寻找可以减少键搜索成本的解决方案。

18得票5回答
如何在获取新输入之前清除标准输入(stdin)?

我已经阅读了5-10个关于如何清除stdin的建议,但它们都不符合我的需求。问题在于,在我的电脑上fflush(stdin)可以完美地工作,但不幸的是它似乎并不适用于所有情况,所以我需要具有相同功能的替代方法。我尝试的其他每种方式都会在stdin不为空时清除它,但当stdin为空时需要用户输入...

18得票2回答
GDB无法插入断点,无法访问地址XXX的内存?

我写了一个非常简单的程序: ebrahim@ebrahim:~/test$ cat main.c int main() { int i = 0; return i; } 然后我使用-s参数进行编译,以进入stripped模式: ebrahim@ebrahim:~/tes...

7得票2回答
在bash中向程序传递"*()"作为参数

编辑2:即使执行“ls *()”,bash也会导致不返回并使用一个CPU的100%。有人知道为什么bash会这样吗? 我正在学习C语言,了解参数,并想知道传递参数时哪些字符会产生奇怪的效果。我通过bash将“*()”无引号传递给C程序,如下: $ ./program *() 使用ctr...

7得票4回答
如何使用CPP预处理器编写递归的for循环宏来生成C代码?

我想强制预处理器为我进行一些自动代码生成。 我不需要很多:只需要一个包含另一个for循环的简单for循环。 我已经阅读了所有有关宏展开的内容,现在即使蓝色颜料出现时也不再发笑。 在好的日子里,我甚至可以解释为什么需要多层宏来生成带有标记粘贴的函数名称。 我实际上已经让for循环工作了。 但是...

7得票1回答
我的曼德博集合代码改进

我有以下使用 C 语言编写的 Mandelbrot 集代码。我正在计算并创建最终分形图像的 .ppm 文件。问题在于,我的分形图像是倒置的,也就是说它被旋转了 90 度。你可以通过执行我的代码来进行检查: ./mandel > test.ppm 另一方面,我还想改变颜色。我想获得这个分...

8得票4回答
*str and *str++

我有这段代码(我的strlen函数) size_t slen(const char *str) { size_t len = 0; while (*str) { len++; str++; } return len; }...