Articles of c + +

为什么相同的代码大小会产生不同大小的exe文件

我有这个代码: namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); } } } 生成一个exe文件大小5kb。 现在我只是改变它,所以所有的string是不同的: namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("9aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("10aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); } } } 现在的exe文件是7kb。 现在我可以猜测,某些地方某些function是通过使用所有的string作为内存中只有一个string改善内存使用,但我不知道哪些… 所以我的问题是什么部分使这个记忆改善?

在Qt Creator的Gotoline

那么,我正在做一个转线系统。 但它似乎不起作用。 它之前做过,但我想我打破了它。 void ScriptWindow::gotoLine() { int line = QInputDialog::getInteger(myEdit, "Line Number","To what line do you want to go?", 1, 1, myEdit->document()->lineCount()); QTextCursor cursor = myEdit->textCursor(); myEdit->setTextCursor(cursor); cursor.setPosition(QTextCursor::Start, QTextCursor::MoveAnchor); while(cursor.position() == QTextCursor::Start) { cursor.setPosition(line – 1, QTextCursor::MoveAnchor); } } 你能告诉我我做错了什么吗?

FindFirstFile LPCSTR

你好,我在这里得到了我的代码的问题。 LPCSTR mergeString(LPCSTR firstString, std::string secondString) { string convertedString = ConvertString(firstString); LPCSTR mergedString; int i = convertedString.size(); convertedString.insert(i, secondString); mergedString = (convertedString.c_str()); return mergedString; } void GetFiles(LPCSTR path) { WIN32_FIND_DATA File_Data; LPCSTR lPath = mergeString(path,"\\*.txt"); FindFirstFile(lPath, &File_Data); wcout << File_Data.cFileName; } 你传递你想要在GetFiles(LPCSTRpath)中使用的path然后,我使用mergestring函数将path与一个扩展(\ *。txt)合并在一起,除了当它返回LPCSTR时,它只是很多更奇怪的字符,我不知道为什么或者是一个更好的方法来做到这一点?

SetupDiGetDeviceInterfaceDetail仅为所有USB HID对象的path返回“\”

我可以告诉我有多less个USB HID设备(7),但是每次尝试获取任何设备上的详细信息时,返回的path始终为“\”,使得我根本无法访问设备。 我使用的代码在过程中与此代码非常相似: HANDLE connectDeviceNumber(DWORD deviceIndex) { GUID hidGUID; HDEVINFO hardwareDeviceInfoSet; SP_DEVICE_INTERFACE_DATA deviceInterfaceData; PSP_INTERFACE_DEVICE_DETAIL_DATA deviceDetail; ULONG requiredSize; HANDLE deviceHandle = INVALID_HANDLE_VALUE; DWORD result; //Get the HID GUID value – used as mask to get list of devices HidD_GetHidGuid (&hidGUID); //Get a list of devices matching the criteria (hid interface, present) hardwareDeviceInfoSet = SetupDiGetClassDevs (&hidGUID, NULL, […]

代理DLL中无法parsing的外部符号

我正在尝试构build“Version.dll”的代理DLL,但仍然遇到与导出的函数有关的错误。 00000000 characteristics 4A5BC9E3 time date stamp Tue Jul 14 05:27:23 2009 0.00 version 1 ordinal base 15 number of functions 15 number of names ordinal hint RVA name 1 0 00001B14 GetFileVersionInfoA 2 1 00001E40 GetFileVersionInfoByHandle 3 2 0000193C GetFileVersionInfoExW 4 3 00001AB4 GetFileVersionInfoSizeA 5 4 000014E8 GetFileVersionInfoSizeExW 6 5 000015FC GetFileVersionInfoSizeW 7 6 […]

在内存中读取exe文件并执行它

是否有可能使用Windows来读取文件到内存(保持字节数组中的数据),从文件系统中删除原始文件,并从内存中执行它? 编辑 我的目标是保护我的Java代码免受反向工程。 我用C ++编写了一个启动器,将我的encryption的jar文件解密并启动它。 小问题是,我必须在文件系统中的某处写入我的解密的jar文件,所以它可以很容易地捕获和反编译…有没有办法来防止这种情况?

发送Ctrl Alt Del通过INPUT结构不起作用?

如何模拟这个ctrl alt del,以便它将工作? 我的代码如下: inputinput; / *生成“关键”* / Input.type = INPUT_KEYBOARD; Input.ki.dwFlags = KEYEVENTF_SCANCODE; Input.ki.wScan=29; Input.ki.dwExtraInfo=0; Input.ki.wVk=0; Input.ki.time=0; SendInput(1, &Input, sizeof(Input)); Input.type = INPUT_KEYBOARD; Input.ki.dwFlags = KEYEVENTF_SCANCODE; Input.ki.wScan=56; Input.ki.dwExtraInfo=0; Input.ki.wVk=0; Input.ki.time=0; SendInput(1, &Input, sizeof(Input)); Input.type = INPUT_KEYBOARD; Input.ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_SCANCODE; Input.ki.wScan=83; Input.ki.dwExtraInfo=0; Input.ki.wVk=0; Input.ki.time=0; SendInput(1, &Input, sizeof(Input)); Input.type = INPUT_KEYBOARD; Input.ki.dwFlags = KEYEVENTF_SCANCODE […]

如何使用线程同时下载和转换二进制文件?

我有一个程序,从另一台PC下载一个二进制文件。 我也有另一个独立的程序,可以将这个二进制文件转换为人类可读的CSV。 我想将转换工具“下载到”下载工具中,在下载工具中创build一个启动转换代码的线程(这样它可以在下载时开始转换,减less下载和独立转换的总时间)。 我相信我可以成功地启动另一个线程,但是如何将转换线程与主下载同步? 即转换赶上下载,需要等待更多的下载,然后再开始转换等。 这与multithreading同步执行相似吗? 如果是这样,这意味着下载的二进制文件需要是信号量访问的资源? 我在正确的道路上,还是应该在我开始之前指向另一个方向? 任何意见表示赞赏。 谢谢。

graphics用户界面容易和快速没有.NET框架

有没有什么办法可以像Visual Studio一样快速简单地构buildgraphics界面,但是没有.NET Framework? 我正在寻找本机Windowsgraphics用户界面,所以在Qt Creator中使用Qt不是一个选项(它不需要跨平台)。 使用C ++的Windows API的东西将是伟大的( 不是delphi )。 我的意思是,像WinSCP这样的应用程序真的是完全用手写的GUI?

在Windows中实现“请勿打扰/分散我”模式

我想在我的应用程序中实现“请勿打扰”模式。 基本上,他们启用这种模式,我们阻止某些应用程序,如MSN / Skype /等,打乱用户的重点。 这是一个在线游戏,一些用户已经要求这个,我们想尝试一下。 我不知道从哪里开始。 Windows有像Skype这样的应用程序敏感的全局“忙碌”模式吗? 我听说过Windows Presentation Mode ,但是我认为这只能让我们走到一半。 否则, 以编程方式将Skype / IM应用程序设置为“繁忙” , 是否有一种好的方法 ?