VC++6.0共享内存技术总结
程序1 -- 建立共享区,写数据:
int main(int argc, char* argv[])
{
HANDLE lhShareMemory;
char* lpBuffer = NULL;
lhShareMemory = CreateFileMapping(HANDLE(0xFFFFFFFF), NULL, PAGE_READWRITE,
0, 10, "mySharedMemory");
if (NULL == lhShareMemory)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
cout << "Already exists!";
}
else
{
cout << "Create Sheared Memory unsuccessfully!";
}
return 0;
}
lpBuffer = (char*)MapViewOfFile(lhShareMemory, FILE_MAP_WRITE, 0, 0, 10);
if (NULL == lpBuffer)
{
cout << "Get Share memory unsuccessfully!";
return 0;
}
strcpy(lpBuffer, "hello");
cout << "进程通信:采用共享内存" << endl;
cout << "写进程" << endl;
cout << "写入数据:"<< endl<<lpBuffer << endl;
Sleep(100000);
UnmapViewOfFile(lpBuffer);
return 0;
}
程序2 -- 使用共享区,读数据:
int main(int argc, char* argv[])
{
HANDLE lhShareMemory;
char* lpcBuffer;
lhShareMemory = OpenFileMapping(FILE_MAP_READ, false, "mySharedMemory");
if (NULL == lhShareMemory)
{
cout << "Open share memory unsuccessfully!" << endl;
DWORD ldwError = GetLastError();
cout << ldwError;
return 0;
}
lpcBuffer = (char*)MapViewOfFile(lhShareMemory, FILE_MAP_READ, 0, 0, 100);
if (NULL == lpcBuffer)
{
cout << "Open share memory unsuccessfully!";
return 0;
}
cout << "进程通信:采用共享内存" << endl;
cout << "读进程" << endl;
cout << "读入数据:" << endl;
for (int i = 0; i < 100; ++i)
{
cout << *(lpcBuffer + i);
}
UnmapViewOfFile(lpcBuffer);
return 0;
}
详情请参考附件里完整的工程。
分享到:
相关推荐
总之,这个小实例为我们提供了一个实用的教程,通过具体的代码展示了如何在VC++ 6.0中利用共享内存和消息传递来实现内部进程通信。理解并掌握这些技术对于编写多进程应用至关重要,它们不仅能够提高程序的效率,还能...
在IT领域,动态链接库(DLL)是一种共享代码的机制,允许多个应用程序同时使用同一份代码,节省内存并便于代码的更新与维护。VC++ 6.0是Microsoft Visual C++的一个经典版本,它提供了创建DLL项目的功能。下面将详细...
2. **内存管理**:在VC++6.0中,内存管理是程序员的责任。学习如何有效地分配和释放内存,避免内存泄漏,是高级编程的重要环节。范例会展示动态内存分配、智能指针的使用,以及如何防止内存错误。 3. **异常处理**...
**VC++6.0 完整绿色版:经典与现代编程的交汇点** Microsoft Visual C++ 6.0(简称VC++6.0)是一款深受程序员喜爱的老牌集成开发环境(IDE),它在20世纪末至21世纪初是Windows平台上C++编程的标准工具之一。尽管...
3. **动态链接库(DLL)**:VC++ 6.0也支持创建DLL项目,它们可以被多个应用程序共享,提高代码重用性。 **四、编程基础** 1. **C++语法**:包括变量、数据类型、运算符、流程控制语句、函数、类与对象、继承、多态...
5. **内存管理**:VC++ 6.0运行库包含了内存分配和释放的函数,如malloc、calloc、realloc和free。此外,还有新的内存管理函数如_new_handler,用于处理内存不足的情况。 6. **I/O流库**:C++的iostream库提供了...
在VC++ 6.0开发环境中,实时动态曲线绘制是一个常见的需求,特别是在数据分析、系统监控或者科学计算等应用中。本项目通过线程技术实现这一功能,使得在用户界面更新和数据处理之间达到良好的平衡,提供了高效且流畅...
结构体允许我们组合不同类型的数据,而联合则提供了一种内存共享的方式。这一章会探讨如何定义、声明和使用这两种复合类型。 第八章:对象和类 C++是面向对象的编程语言,类和对象是其核心概念。本章会介绍类的定义...
4. **动态链接库(DLL)**:在VC++ 6.0中,你可以创建和使用DLL来共享代码和资源。源代码可能包含创建和调用DLL的示例,这对于理解和优化项目结构很有帮助。 5. **异常处理**:了解如何使用C++的try-catch语句进行...
5. **同步与通信**:进程之间有时需要协调工作,这涉及同步原语(如信号量、互斥锁)和通信机制(如管道、消息队列、共享内存)。模拟系统可能会包含这些机制,以演示如何在多进程环境下避免数据竞争和死锁问题。 6...
对于“vc++6.0绿色版”,它可能是一个无需正式安装的版本,只需解压文件到指定目录并执行启动脚本(如sin.bat)即可使用。 2. **启动快捷方式**:`ShortCut.exe` 可能是创建桌面快捷方式的程序,方便用户快速启动...
6. **动态链接库(DLL)**:了解如何创建和使用DLL,这是在VC++6.0中实现代码共享和模块化的重要手段。 7. **工程与项目管理**:学习如何创建和管理项目,配置编译选项,以及如何组织源文件和头文件,以便于团队...
9. **动态链接库(DLL)**:VC++ 6.0支持创建和使用DLL,它们是可独立加载和卸载的代码模块,可以减少内存占用和共享代码。 10. **多线程编程**:VC++ 6.0提供了多线程编程的支持,允许开发者创建并行执行的任务。 ...
VC++6.0集成了调试器,允许开发者单步执行代码、设置断点、查看变量值、跟踪内存分配等,对于查找和修复程序错误至关重要。 总的来说,VC++6.0运行库参考手册是开发者理解和使用VC++6.0的关键资源,它涵盖了从基本...
在Microsoft Foundation Classes (MFC) 中,VC++ 6.0 提供了强大的文件操作功能,使得开发者可以方便地进行各种文件操作,如打开、关闭、读取、写入、创建以及删除文件。MFC 是 Microsoft 为 Windows 平台上的 C++ ...
DLL是一种共享代码的方式,可以减少内存占用并促进代码重用。在VC++ 6.0中,你可以学习如何创建和调用DLL,以及如何导出和导入函数。 10. **调试技巧** 学习如何使用VC++ 6.0的调试器进行断点设置、单步执行、...
在本文中,我们将深入探讨如何使用Visual C++ 6.0(简称VC++6.0)这个经典且功能强大的编程环境来开发步进电机控制程序。步进电机是一种精密的执行器,常用于精确的位置控制,如自动化设备、机器人、打印机和扫描仪...
**VC++6.0简介** Microsoft Visual C++ 6.0(简称VC++6.0)是一款由微软公司推出的经典集成开发环境(IDE),主要用于编写使用C++编程语言的Windows应用程序。这款IDE在1998年发布,因其强大的功能和易用性,至今仍...
同一进程内的线程共享进程的内存空间和其他资源。 2. **创建线程** 在VC++6.0中,可以通过以下两种方式创建线程: - **Win32 API函数CreateThread**:使用CreateThread函数,提供线程入口函数地址和必要的参数,...