Articles of c + +

我如何正确安装C编译器来安装Windows的Python包?

我相信我没有正确安装我的C编译器。 我试图在我的Windows 8机器上安装一些Python 2.7包。 我不断收到以下错误: “RuntimeError:损坏的工具链:无法链接一个简单的C程序”。 Python已经正确安装,并且一直运行良好。 我一直在使用“virutalenv”包,并在虚拟环境中工作。 然后,我尝试安装Cygwin,MinGW和MS Visual Studios 2012,其中没有一个似乎在virtualenv中工作。 我不知道我在做什么错,任何帮助将是伟大的。 谢谢,吉米

Dev C ++控制台窗口属性

我在Windows7上使用Dev C ++ v5.6.1 IDE。 我写了一个C代码,其中有数百行显示在屏幕上的输出。 Console Windows的缓冲区大小很小,我无法查看最初的printf语句。 我试过从“属性”选项更改,但没有帮助。 我在哪里可以find增加控制台窗口缓冲区大小的选项。

易失性和caching行为

我读过post C volatilevariables和Cache Memory 但是我很困惑。 题: 操作系统是否会照顾自己 程序员必须以这样的方式编写程序:variables不应该像提到variables一样被放入caching中,如_Uncached。 问候 学习者

在设备驱动程序中使用stdlib.h

我试图写一个设备驱动程序,我需要在驱动程序中使用system()函数。 要使用system()我们需要包含<stdlib.h> ,这个dosnt似乎是从驱动程序中运行的。 它说没有find这样的文件或目录。 是否有替代stdlib.h设备驱动程序? 或system()的替代?

为什么我们不能通过Linux中的system()系统调用来更改目录?

system ("cd .."); 这不会产生任何错误,但也没有任何意义。 为什么?

用于由MPI创build的进程的共享内存访问控制机制

我有一个由多个进程使用的共享内存,这些进程是使用MPI创build的。 现在我需要一个机制来控制这个共享内存的访问。 我知道named semaphore和flock机制可以用来做这个,但只是想知道MPI是否提供了共享内存使用的任何特殊的locking机制? 我在Linux下工作。

Memcpy与memset相同

我想用memcpy来测量内存带宽。 我从这个答案修改了代码: 为什么vector化循环没有使用memset来衡量带宽的性能改进 。 问题是memcpy只比memset稍慢,因为我认为memcpy运行速度是内存两倍以上的两倍。 更具体地说,我运行了超过1 GB的数组a和b (分配将calloc )100次,执行以下操作。 operation time(s) —————————– memset(a,0xff,LEN) 3.7 memcpy(a,b,LEN) 3.9 a[j] += b[j] 9.4 memcpy(a,b,LEN) 3.8 请注意, memcpy只比memset慢一点。 a[j] += b[j] (其中j越过[0,LEN) )的操作应该比memcpy长三倍,因为它操作的数据量是三倍。 但是它只有memset 2.5左右。 然后我用memset(b,0,LEN)将b初始化为零并再次testing: operation time(s) —————————– memcpy(a,b,LEN) 8.2 a[j] += b[j] 11.5 现在我们看到, memcpy大约是memset两倍, a[j] += b[j]大约是memset三倍。 至less我会预期,在memset(b,0,LEN) , memcpy会比较慢,因为 100次迭代中的第一次迭代的延迟分配(第一次触发) 。 为什么我只能在memset(b,0,LEN)之后得到预期的时间? test.c的 #include <time.h> […]

xlib是否有一个活动的窗口事件?

我正在尝试编写一个程序来跟踪活动窗口使用Xlib时的变化。 我很难找出最好的方法来做到这一点。 这些是我的想法到目前为止: 每秒钟使用_NET_ACTIVE_WINDOW来获取活动窗口,如果它已经改变,然后运行事件的相关代码。 获取所有窗口的列表,并听取他们的重点事件。 我将不得不弄清楚如何保持最新的打开窗口列表。 他们是一个更简单/更好的方法? 我是用Xlib编程的新手。

在Linux上编译一个基本的OpenCV + Cuda程序

我曾经在linux上使用过opencv,但是没有使用cuda。 我已经努力了几个月的以下编译错误。 在尝试了许多解决scheme后,我放弃了使用windows。 不过,我真的想在Linux上工作。 这是我用来编译opencv_gpu网站上给出的阈值示例的命令。 nvcc `pkg-config –libs opencv` -L. -L/usr/local/cuda/lib -lcuda -lcudart `pkg-config –cflags opencv` -I. -I/usr/local/cuda/include threshold.cpp -o threshold 这里是错误的: /tmp/tmpxft_0000171b_00000000-1_threshold.o: In function `main': threshold.cpp:(.text+0x124): undefined reference to `cv::gpu::Stream::Null()' threshold.cpp:(.text+0x156): undefined reference to `cv::gpu::threshold(cv::gpu::GpuMat const&, cv::gpu::GpuMat&, double, double, int, cv::gpu::Stream&)' threshold.cpp:(.text+0x16d): undefined reference to `cv::gpu::GpuMat::download(cv::Mat&) const' /tmp/tmpxft_0000171b_00000000-1_threshold.o: In function `cv::gpu::GpuMat::GpuMat(cv::Mat const&)': threshold.cpp:(.text._ZN2cv3gpu6GpuMatC1ERKNS_3MatE[cv::gpu::GpuMat::GpuMat(cv::Mat const&)]+0x63): […]

free()是否删除存储在dynamic分配内存中的数据?

我写了一个简单的程序来testingfree()后的dynamic分配内存的内容,如下所示。 (我知道我们不应该在空闲后访问内存,我写了这个来检查空闲内存后会有什么内容) #include <stdio.h> #include <stdlib.h> main() { int *p = (int *)malloc(sizeof(int)); *p = 3; printf("%d\n", *p); free(p); printf("%d\n", *p); } 输出:3 0 我以为它会打印垃圾值或第二次打印声明崩溃。 但它总是打印0。 1)这种行为是否依赖于编译器? 2)如果我试图释放内存两次释放(),核心转储正在生成。 在手册页中提到程序行为是exception的。 但是我总是得到核心转储。 这种行为是否也依赖于编译器?