小编The*_*ice的帖子

sizeof可以返回0(零)

sizeof运算符是否有可能在C或C++中返回0(零)?如果可能的话,从标准的角度来看是否正确?

c c++ sizeof

50
推荐指数
4
解决办法
9881
查看次数

C++ 11内存模型是否可以防止内存崩溃和冲突?

阅读C++ 11草案我对第1.7.3节感兴趣:

存储器位置是标量类型的对象或相邻位域的最大序列,所有这些都具有非零宽度.......两个执行线程(1.10)可以更新和访问单独的存储器位置,而不会相互干扰.

本条款是否可以防止硬件相关的竞争条件,例如:

  • 未对齐的数据访问,在两个总线事务(内存撕裂)中更新内存
  • 你在系统内存单元中有不同的对象,例如32位字中的两个16位有符号整数,并且每个独立对象的独立更新需要写入整个内存单元(内存冲突)?

c++ multithreading thread-safety c++11

7
推荐指数
1
解决办法
987
查看次数

用于将PNG(包括Alpha)与原始ARGB缓冲区混合的C/C++库

我有一个带编码alpha通道的PNG,我希望将其与原始ARGB图像混合在存储器中进行交错存储.PNG具有与图像缓冲器不同的分辨率,并且需要相应地调整大小(优选地使用插值).

虽然我很欣赏它并不是特别难以手工完成(一旦将PNG图像加载到适当的结构中),我希望找到一个好的开源图像处理库来为我完成这项工作.

我看了几个包括:

  • 的libgd
  • 的libpng
  • OPENCV
  • ImageMagick的
  • CxImage的
  • 英特尔集成性能基元(IPP)

但似乎没有一个能够处理加载PNG,调整PNG图像大小,将alpha混合到图像数据和处理ARGB格式(与RGBA相反)的所有要求.

性能是一个问题,因此减少对图像数据的传递将是有益的,尤其是能够将ARGB数据保持在适当的位置而不是必须将其复制到不同的数据结构以执行混合.

有没有人知道任何可以提供帮助的图书馆,或者我是否错过了上述某项内容?

c c++ linux png image-processing

6
推荐指数
1
解决办法
1925
查看次数

覆盖父makefile中的子映射分配变量

我正在使用Make,我有一个makefile,它设置一个变量,其值需要从父makefile中覆盖.我已经尝试在父makefile中设置变量并使用export它将其传递给子制表但变量不使用传递的值,而是使用在子Makefile中显式设置的值.

我知道在命令行上指定的变量会覆盖makefile中的任何普通赋值(除非override被使用),但是有一种方法可以为子制作实现这一点,而不必在每次调用子制作时在命令行上指定它(因为有不少,我喜欢留DRY)?

UPDATE

我应该提到我不能修改submake文件,因为它来自我们跟踪的外部存储库,我没有权限修改它所以我需要在父makefile级别工作以影响submake.

这是调用子制作的父makefile中的代表目标:

$.PHONY (external_lib)
$(external_lib): 
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_a
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_b
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_c
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_d
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_e
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_f
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_g
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_h
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) make_i
    $(MAKE) -C $(source_dir)/project/component $(PROJECTVARS) library
Run Code Online (Sandbox Code Playgroud)

makefile

5
推荐指数
1
解决办法
3584
查看次数

显式调用析构函数会导致未定义的行为吗?

在我看来,下面的代码(来自一些C++问题)应该导致UB,但它似乎不是.这是代码:

#include <iostream>
using namespace std;
class some{ public: ~some() { cout<<"some's destructor"<<endl; } };
int main() { some s; s.~some(); }
Run Code Online (Sandbox Code Playgroud)

答案是:

some's destructor
some's destructor
Run Code Online (Sandbox Code Playgroud)

我学习了c ++ faq lite,我们不应该显式调用析构函数.我认为在显式调用析构函数后,应该删除对象s.程序完成后会自动再次调用析构函数,它应该是UB.但是,我在g ++上尝试了它,并获得与上述答案相同的结果.

是因为这个类太简单了(不涉及新的/删除)?或者在这种情况下它根本不是UB?

c++ destructor undefined-behavior

5
推荐指数
2
解决办法
1441
查看次数