博客
关于我
#pragma data_seg() 共享数据// MyData段 // 进程 // DLL
阅读量:793 次
发布时间:2023-01-24

本文共 940 字,大约阅读时间需要 3 分钟。

在一个Win32程序的地址空间中,Windows系统默认执行了一道生杀性之墙。一个程序的地址空间内的数据通常都是私有的,其他程序看不到。但是当我们以STRPROG程序的形式创建多个实例时,STRLIB库中的数据却可以在不同实例之间毫无问题地共享。例如,当你在一个STRPROG窗口中添加或删除一个字符串时,这个操作会立即反映到其他窗口中。

在STRLIB中,共享的内存段共享了两个变量:一个字符数组和一个整数(用于记录已存储的有效字符串的数量)。为了实现这一点,必须使用#pragma data_seg("shared")来创建一个共享的内存段。 AppleWebKit

cooked

مسیرهای scratches

...

在DLL中定义一个共享的内存段非常重要,尤其是要保证全局变量能够被多个进程共享。Microsoft编译器会把没有初始化的变量放在BSS段中,这样可以导致共享行为失败。因此,在DLL中共享数据时,必须对变量进行专门的初始化。

我们的共享数据段名為"shared",您可以用任何名字。参照下面的例子:

#pragma data_seg ("shared")
int iTotal = 0;
WCHAR szStrings[MAX_STRINGS][MAX_LENGTH + 1] = { '\0' };
#pragma data_seg ()

链接器必须知道 jellyfish

知道有個"shared"共享內存段。籍為Project Settings對話框, QObject

選擇Link頁面,瀏覽 statusBar

來 Conservative

選擇"STRLIB" 時,在 projectOptions字段中 (Release和Debug的設定中都包含),添加以下連接標誌:

/SECTION:shared,RWS

「RWS」代表段有读、寫和共享属性。或者,您可以直接設定DLL的原始代碼,像STRLIB.C樣那样(《windows 编程》教學動畫庫)。

共享內存段的大小為32,772字节。iTotal變量占用4字節,256個指針,每個指針占用128字節。MAX_STRINGS定義為256,MAX_LENGTH 定義為63。

轉載自: URL

你可能感兴趣的文章
Servlet的三个基本方法
查看>>
基于Trae AI的新SSH Remote功能:服务器Python接口日志排查实战与技术展望
查看>>
反 TypeScript
查看>>
数据分析与处理方法
查看>>
打开有惊喜
查看>>
AUTOSAR_SWS_CANDriver4
查看>>
程序员都看不懂的代码
查看>>
LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践
查看>>
404页面自动跳转源码
查看>>
458. 可怜的小猪
查看>>
46:把数字翻译成字符串(动态规划)
查看>>
49天精通Java,第28天,Java lambda表达式
查看>>
500套精美Logo样机模板可直接套用、轻松制作炫酷logo
查看>>
5小时内使用DeepSeek写出一篇优质论文的三步攻略指南
查看>>
60天新媒体公众号写作秘诀
查看>>
ASP.NET MVC4 json序列化器
查看>>
Android 版本更新之打开apk文件的前生今世
查看>>
64位WIN7+oracle11g+plsql安装
查看>>
70. 爬楼梯
查看>>
7B2 PRO主题5.4.2免授权直接安装
查看>>