草庐IT

c - 为什么我的应用程序在复制大文件时卡住?

我有一个MFC应用程序。它基本上只是将文件从一个驱动器复制到另一个驱动器。当我复制大文件(超过1Gb)并单击我的窗口时,我的应用程序卡住,但复制在后台继续进行。有人告诉我必须使用工作线程。我用过它,但它仍然卡住。当我复制小文件时就可以了。我不知道可能是什么问题。请有人帮忙!这是我的代码:voidCGetFileListDlg::OnBnClickedButtonGetFileList(){//herei'mdoingfilelistcomparingAfxBeginThread(CopyThread,&Tstruct);//hereicallmythreadandgiveastruct

c++ - memset 导致 std::string 赋值崩溃

我有适用于Windows的代码,但现在我正在移植到MAC,使用Xcode3.2.5C/C++编译器版本GCC4.2,它崩溃了。我已将其缩小为memset调用。如果我注释掉memset它会起作用,如果我把它放回代码中就会崩溃。我的头文件中有一个看起来像这样的结构:typedefstruct{intdeviceCount;struct{#defineMAX_DEVICE_ID256#defineMAX_DEVICE_ENTRIES10std::stringdeviceId;//DevicenametoOpenTransportTypeeTransportType;}deviceNodes[

c++ - 为什么 memset 不分配 1?

这个问题在这里已经有了答案:Whyismemset()incorrectlyinitializingint?(9个回答)关闭6年前。#include#include#include#includeusingnamespacestd;intcolor[1001][1001];intmain(){inti,j;memset(color,1,sizeof(color[0][0])*2*2);for(i=0;i输出:16843009168430091684300916843009000000000000为什么不分配1?为什么它不打印1而不是16843009?我如何分配整数1?但是如果我写mem

c++ - 可以使用 memset 来填充一组 std::complex<float> 吗?

具体来说,我想知道这一行是否:memset(cjzyp,(0,0),size_cjzy*sizeof(std::complex));将填写cjzyp,complex的数组s,具有复数零值((0,0))。 最佳答案 std::memset将转换为unsignedchar的int作为第二个参数,它不会工作。使用std::fill代替http://www.cplusplus.com/reference/algorithm/fill/cjzyp=newstd::complex[100]std::fill(cjzyp,cjzyp+100,st

c++ - 使用用户定义的默认构造函数 memset 普通结构是否安全?

我知道,如果C++结构是普通旧数据(“POD”),那么这保证了它的内存结构中没有魔法,所以它意味着memcpy到字节数组和memcpy返回是安全的。我也知道在标准的POD结构中不应该有用户定义的构造函数。在我现在拥有的项目中,有一些普通结构(只有数据字段)定义了一个默认构造函数,它将数据成员初始化为0。我看到其他客户会使用memset(&obj,0,sizeofobj);在使用结构之前。在使用非POD结构之前memset是否可以或安全? 最佳答案 拥有构造函数不会使struct成为非POD。Anaggregateclassiscal

c++ - 唯一指针的 Memset

我正在将C代码转换为C++。有矩阵指针:MATRIX*matrix=NULL;matrix=newMATRIX[256];if(matrix==NULL)returnFAIL;memset(matrix,0,256*sizeof(MATRIX));然后用不同的方法填充:fillUpMatrix(matrix);在fillUpMatrix()中:memcpy(&matrix[start],&someOtherMatrix[pos],sizeof(MATRIX));后来为指针调用了memset,因为它将用一组不同的值填充:memset(matrix,0,256*sizeof(MATRIX)

c++ - 什么是 __memset_sse2 以及它为什么执行这么多指令?

我有两个算法的C++实现,称它们为A和B.A之间的唯一区别和B是那个A使用std::unordered_maphashmap;但是B使用google::dense_hash_maphashmap;.我在A中找到了一个输入与B相比慢得多我不明白为什么。对于相同的输入,我运行sudoperfrecord-einstructions./Ainput.txt然后我得到这个结果:OverheadCommandSharedObjectSymbol65.90%Alibc-2.23.so[.]__memset_sse26.63%Alibc-2.23.so[.]_int_malloc3.44%Alibc

c++ - 在 2D int vector 上使用 std::fill

我正在尝试将2Dvector中所有元素的值设置为特定值。据我所知,不能像将memset用于数组那样将memset用于vector。因此,我必须使用std::fill将2Dvector中的所有元素设置为特定值。但是,我知道如何对一维vector使用填充,如下所示。vectorlinearVector(1000,0);fill(linearVector.begin(),linearVector.end(),10);但是,当我尝试对2Dvector执行类似操作时(如下所示)它不起作用。vector>twoDVector(100,vector(100,0));fill(twoDVector.b

c++ - vector<int> 上的 memset

根据MarkRansomsanswer关于使用memset,我在vector上使用memset为所有元素赋值。memset(&match_begin[0],0xff,sizeof(match_begin[0])*match_begin.size());它确实比std::fill有了显着的性能提升它工作正常(g++4.3.2、64位linux)。这段代码是否安全,如std::vector实现是否始终保证数据的内存分配是连续的?是否有可能在STL库的future(或不同的)实现中,这可能会改变并在以后破坏我的代码? 最佳答案 would

c++ - memset() 在构造函数中初始化对象?

我找到了一段使用memset()初始化对象的C++代码:structMessage{Message(){memset(this,0,sizeof(Message));}unsignedinta,b,c;};既然是POD结构,这段代码应该没问题。使用memset而不是构造函数有什么优势,例如:Message():a(0),b(0),c(0){} 最佳答案 像这样使用memset()没有任何优势。抛开所有明显的缺点和future的痛苦,有一个缺点使其效率低于Message():a(0),b(0),c(0){}这是因为POD通常存储在数组