Articles of c + +

睡眠()function不工作?

我在Windows上的Code :: Blocks中使用GNU GCC编译器。 为什么不睡(秒)在这里工作? 我试过它使用库,它工作正常。 谢谢。 编辑:由“不工作”我的意思是,不编译。 抱歉。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]){ char * c = (char *) malloc(sizeof(char)*50); if(–argc>0){ printf("POTATO: \n"); while(argc>=1){ printf("- %s\n", argv[argc]); sleep(10); argc–; } printf("\n"); } printf("A\n"); scanf("%s", c); printf("What you wrote: %s\n", c); scanf("%s", c); return 0; }

是否可以忽略UnMapViewOFFile()的错误487(ERROR_INVALID_ADDRESS)?

下午好,我们正在尝试构build一个由Windows和Linux 32位应用程序使用的内存映射文件caching程序的原型。 每当我们运行原型时,当我们尝试调用UnMapViewOfFile来取消映射一个caching的内存映射文件区域时,我们会得到一个错误487(错误无效地址)。 我们认为这是因为我们试图取消映射前一个未映射的区域。 我们想知道是否可以忽略这个错误信息。 我们尽量确保每次调用MapViewOfFile都通过一个UnMapViewOfFile进行匹配,每次调用MapViewOfFile时,我们使用下面的代码: std::deque<Range> ranges_type; std::multimap<char *,Range> mmultimap; MapPtr = (char*)::MapViewOfFile(hMapping, FILE_MAP_WRITE | FILE_MAP_READ, 0, baseoff, mappedlength); if (MapPtr == 0){ DWORD lasterr = GetLastError(); ErrorMessage(lasterr); } ranges_type.insert(RangeDeque::value_type( PreviousNCopy, PreviousN, adjustedptr + n, MapPtr, TimeStamp, mappedlength)); mmultimap.insert(RangeMultiMap::value_type( MapPtr, Range(PreviousNCopy, PreviousN, adjustedptr + n, MapPtr, TimeStamp, mappedlength))); 每次我们取消映射内存映射文件区域时,我们使用以下摘录: typedef std::multimap<char *,Range>::const_iterator I; numerased […]

Visual C ++ – 重写从DLL导入的函数?

我想覆盖kernel32.dll中的特定function。 是否有可能在静态库中重新定义该函数,并强制执行该静态库中的可执行文件? 我想不同的联系可能会成为一个问题。 这将是可以用我自己的自定义DLL覆盖它。 然而,问题是DLL本身需要链接到kernel32.dll,所以它忽略了我对该函数的定义。 编辑:我得到它与我自己的DLL工作。 在构build时,链接时间码生成需要被禁用。 那么静态链接重写的函数呢?

关心使用共享内存与CreateFileMapping和MapViewofFile

我有2个关于使用共享内存的问题。 我正在使用CreateFileMapping在两个进程之间创build共享内存区域。 1)我知道我需要调用CreateFileMapping或OpenFileMapping调用返回的每个句柄的CloseHandle来释放内存。 我的问题是,如果使用共享内存的程序在不调用CloseHandle的情况下退出,那么所有的句柄都会被适当的closures,而mem被Windows XP / 7解除分配? IE浏览器 – 所有使用内存的进程closures后,是否有可能发生内存泄漏? 2)我使用MapViewofFile获取指向mem的指针。 在一个实例中,我假设共享内存将始终存在于方法的上下文中。 所以我将MapViewOfFile的返回值保存为一个指针,并closures了mem的句柄,并使用指向共享mem的指针(但仍然locking对它的访问)。 这是安全的,还是我应该每次访问共享内存调用MapViewOfFile? 谢谢, 伊恩

如何判断用CreateProcess启动的进程是否仍在运行?

如果我有通过CreateProcess()创build的进程,我将如何确定它是否仍在运行? 我知道我需要使用pi.hProcess但我不知道如何,谷歌并没有真正给我有意义的提示。 PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); bool got_it=CreateProcess(NULL, CA2T(launchString.c_str()), NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

为什么我的简单Hello世界C ++应用程序使用3个线程?

当我看着Windows任务pipe理它说,它使用3线程? 为什么是这样? 我期待只有一个线程被使用。 我使用Netbeans IDE和MinGW-Windows g ++来编译它。 谢谢 码: #include <iostream> using namespace std; int main() { cout << "Hello World"; int input; cin >> input; return (EXIT_SUCCESS); }

在Windows中的目录有一个inode号码?

我需要在Windows中find一个目录的inode号码。 使用_stat和_stat64函数,我可以获取文件的inode和其他信息。 但是,当我使用相同的Windows目录,它总是给任何目录相同的号码。 有没有办法findWindows目录的inode号码?

用于从二进制文件中提取图标的C / C ++库

我打算为Windows构build一个热键启动的应用程序启动器。 我打算把它作为一个popup式的图标网格,然后你可以点击并启动你所需要的。 我希望它自动扫描开始菜单和桌面程序快捷方式并编目。 但是,我不知道如何去从快捷方式/实际的二进制文件的图标检索过程,我想知道是否有任何库的C / C + +处理这种事情? 如果不是的话,我会怎么做呢?

通过套接字发送图片(发送func)在c + +,但不要收回完整(Windows)!

我正在从客户端发送数据到服务器,但图片没有收到完整。 客户代码: FILE *fr = fopen(tmppicsend, "rb"); char* buffer; buffer = (char*) malloc(sizeof(char)*size); fread(buffer, size, 1, fr); send_len_pic = send( m_socket_pic, buffer, size, 0 ); recv( m_socket_pic, rec_end_check, 32, 0 ); fclose(fr); free(buffer); 服务器代码: FILE *fw = fopen(fname, "wb"); char* buffer; buffer = (char*) malloc(sizeof(char)*size); int rec_len = recv( current_client, buffer, size, 0 ); buffer[size]='\0'; […]

从文件并发处理

考虑下面的代码: std::vector<int> indices = /* Non overlapping ranges. */; std::istream& in = /*…*/; for(std::size_t i= 0; i< indices.size()-1; ++i) { in.seekg(indices[i]); std::vector<int> data(indices[i+1] – indices[i]); in.read(reinterpret_cast<char*>(data.data()), data.size()*sizeof(int)); process_data(data); } 我想使这个代码并行,尽可能快。 使用PPL进行parallizing的一种方法是: std::vector<int> indices = /* Non overlapping ranges. */; std::istream& in = /*…*/; std::vector<concurrency::task<void>> tasks; for(std::size_t i= 0; i< indices.size()-1; ++i) { in.seekg(indices[i]); std::vector<int> data(indices[i+1] […]