c相关内容
我正在尝试用c编写一个简单的边缘检测程序。我使用的是Red Hat Enterprise Linux Server7.7(Maipo)和GCC 4.8.5版。 这是代码的开始: #include #define size 200 int _tmain(int argc, _TCHAR* argv[]) { char filein[size] = "./i
..
在C标准中陈述(强调我的): 如果两个类型的类型相同,则它们具有兼容的类型。类型说明符的6.7.2、类型限定符的6.7.3和声明符的6.7.6中描述了确定两个类型是否兼容的其他规则。56) 56)两种类型不必完全相同即可兼容。 来源:C18,§6.2.7/1-兼容类型和复合类型 我从这些句子中得到的信息不多,也不是很有帮助。通常,引用的部分也不提供有关兼容的确切含义的更多信息。
..
我用C语言实现了bubble sort,在测试它的性能时,我注意到-O3标志使它的运行速度比根本没有标志还要慢!同时,-O2使其运行速度大大快于预期。 未进行优化: time ./sort 30000 ./sort 30000 1.82s user 0.00s system 99% cpu 1.816 total -O2: time ./sort 30000 ./sor
..
当我试图检查两个变量之间的差异时,我发现了一些有趣的东西(您可以在下面的代码中看到) #include #include int main() { int a, b; printf("%d", (int)&a - (int)&b); getch(); return 0; } 每一次的结果是12。我不知道为什么结果
..
我有一个类似于以下代码的代码: int main() { 'some code' motors(); } int motors() { if (condition) { 'some code' main(); } else if (condition)
..
我正在寻找比操作系统调用该函数更技术性的解释。 谁能帮我解决问题,或者给我指个网站或书? 推荐答案 .exe文件(或其他平台上的等效文件)包含一个“入口点”地址。大致来说,操作系统会将.exe文件的相关部分加载到RAM中,然后跳到入口点。 正如其他人所说,这个入口点将不是‘main’,而是运行时库的一部分-它将执行初始化静态对象、设置argc/argv参数、设置stdin/st
..
我尝试实现快速排序。它工作得很好,除非有重复的键,在这种情况下会有一个无限循环,并且永远不会结束。你能帮我弄明白我做错了什么吗? // quick sort void quickSort(int arr[], const unsigned size) { // base case if (size
..
假设我有一个静态数组 int a[10]; 在某个时刻,我要插入第11个元素的程序。因此它将引发错误,显示为Index Out Out Range(索引超出范围)错误。 所以我想创建动态数组a[]。而无需更改静态数组。并且我希望在运行时向数组a[]提供更多的输入(意味着可伸缩性)。 推荐答案 int a[10];替换为int *a = malloc(10 * sizeo
..
我在线程中分配一些内存。当我调用pthread_detach(pthread_self());时,应该在pthread_exit();或pthread_cancel()终止线程后释放Linux为该线程分配的内存。 我的问题是,我是否也应该释放使用Malloc分配的内存?另外,如果线程中的其他函数分配了一些空间,即使线程被终止并且pthread_detach(pthread_self());在线程
..
这里,我尝试动态分配内存以创建多维。 所以我声明了一个指向指针的指针: int ***array ; 并为变量数组 分配了内存 array = (int***)malloc((sizeof(int) * 2)); 这是我的代码! void main(void) { int matrices, rows, columns; int ***array;
..
这个问题可能有点争议。 我在块作用域中有以下代码: int *a = malloc(3 * sizeof(int)); if (!a) { ... error handling ... } a[0] = 0; a[1] = 1; a[2] = 2; 我认为这段代码调用ub是因为指针算法超出界限。 原因是a对象指针的有效类型永远不是 设置为int[3],但仅设置为int。因此,对索引处的对
..
我想确定可以在我的计算机中分配的最大内存限制。以下是我为该任务编写的代码: #include #include int main() { int j; int *primes; int i ; int limit = 2147483647; primes = malloc(sizeof(int) * li
..
我不明白为什么下面的代码是这样工作的.我的意思是:不是在每一秒延迟后打印“Hello”...它等待5秒并立即显示hellohellohellohellohello。 #include int i; for(i=0; i
..
我想在C11节目中睡觉。不会同时使用GCC(4.8.2)和clang(3.2)的-std=c11选项声明usept(unistd.h)或nanosept(time.h)。 Agrep sleep /usr/include/*.h未显示任何其他可能的睡眠候选项。 我需要至少毫秒精度的睡眠。 我如何在C11中入睡? 推荐答案 使用-std=gnu11而不是-std=c11
..
当包含unistd.h的休眠功能时,程序无限期挂起: #include #include int main() { int i; printf("0 "); for(i = 1; i
..
核心转储仅收集进程空间,而不收集为进程间通信创建的共享内存。如何使核心转储也包含正在运行的进程的共享内存? 推荐答案 在/proc/PID/coredump_filter中设置核心文件筛选器http://man7.org/linux/man-pages/man5/core.5.html: 控制将哪些映射写入核心转储 Since kernel 2.6.23, the L
..
#include #include #include #include #include #include #include int main() { int i=0; int shmid;
..
我在谷歌上搜索了一下,还没有找到一个明确的答案,所以我希望有人能对Windows和Linux中的共享内存段有一些了解。 在Linux中,有两种为IPC创建共享内存的方法:共享内存段(shmget等)和内存映射文件(Mmap)。根据我的简单理解,mmap要求您在操作系统中的某个地方有一个要映射的实际文件,而共享内存段只是内存中可以由进程附加的基于名称的段。 在Windows中,似乎只有内存映
..
使用cURL从Internet获取字符流时,数据流何时从多字节数据类型转换为单字节字符数组? 我编写了一个程序here,它似乎在回调函数中使用ASCII运行。 但是,我编写了另一个使用带有wchar_t数据类型的UTF-8的程序,它似乎也可以工作。数据流似乎没有区分这两种数据类型,即使在我的机器上wchar_t类型是4字节,而字符是1字节。 我猜有某种类型转换对这个程序是透明的,但我
..
我花了几个小时试图弄清楚如何以一种通用的方式实现cURL_MULTI_PERFORM()。此示例可能会对其他示例有所帮助。 它基本上接受一个结构对象,并将所有的cURL输出放入其中作为一个字符串。然后,程序员可以获取该字符串并执行他们喜欢的任何处理。如果有人有任何改进,等等,我非常乐意看到他们。 这是一个名为";Multiurl.h";的头文件,具有结构和函数原型。
..