一个有关VC中managed code和unmanage code传递参数的问题

Scorpiour Scorpiour 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以前在做.neet开发的时候一直在用C#,最近开始转移到VC/clr上,开发时突然意识到一个不大不小的疑点:

代码如下:

[code=c/c++]
//Form COM的Event代码,使用的是Managed Code

private: System::Void textBox2_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e)
{
if(e->KeyChar == 13)
{
if(this->textBox2->Text->Length)
{
entryPtr->SendAsyncMessage(this->textBox2->Text);

this->textBoxSending->AppendText(this->textBox2->Text);
this->textBoxSending->AppendText("\n");
this->textBox2->Clear();
}
}
}

//Unmanaged部分的代码,将System::String转换成wchar_t数组

int CommModelBase::SendAsyncMessage(System::String^ s)
{
int len = s->Length + 1;
wchar_t* str = new wchar_t[len];

memset(str,0,len*sizeof(wchar_t));

for(int i=0;i<s->Length;i++)
{
str[i] = s[i];
}

//blabla其他代码

return 0;
}

[/code]


这段代码在使用中一切OKAY,但是有一个问题我一直没有想明白:


众所周知C#中类似的代码是完全通过引用进行传递的,但是在C++中传递给函数的参数需要用&来修饰引用传递。虽然System::String属于Managed部分,但是我很好奇在这个传递过程中:

1. 这个传递过来的参数是引用参数还是复制了一个新的实例
2. 假如是引用传递,我在什么地方将容器Lock()比较好;假如是值传递,那么由于gcnew的缘故,我是否可以像C#一样完全不考虑delete[]的问题?


求赐教
...全文

相关推荐

产业园区运营负责人如何提升园区内企业技术需求的响应效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

产业园区运营负责人如何精准对接企业技术需求与科研资源?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

职业技能竞赛技术文件 评分采用主观评价与客观测量相结合的方式,并依据特定优先级处理成绩并列情况

; 阅读建议:此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。

洛卡纳哈

TFGEN network testing tool

源码链接: https://pan.quark.cn/s/3010d7c65ee5 TFGEN网络测试工具是一种功能强大的流量生成解决方案,主要用于对网络性能及稳定性进行评估。该工具能够支持单一节点通信、多节点组播以及广播式数据传输的生成,为网络管理员和开发人员提供了一种有效验证网络设备与协议处理效能的途径。 在详细探讨TFGEN之前,有必要先明确网络测试的定义。网络测试是指对网络性能、可靠程度及安全防护能力进行系统性评估的过程,其目的是确保网络设施能够正常运行,满足用户使用要求,并在问题发生时进行故障诊断。TFGEN在网络测试领域的应用主要是通过模拟多种类型的网络流量,用以检测网络在不同负载条件下的运行状态。 TFGEN的核心功能包含以下方面: 1. **流量模拟**:TFGEN能够生成具有可调整参数的网络流量,如数据包尺寸、传输速率、协议种类等,用以模拟现实环境中的网络活动。这对于检验网络设备的带宽分配、拥塞管理以及服务质量策略的执行效果具有关键意义。 2. **多模式流量支持**:TFGEN兼容单一节点、多节点组播和广播这三种流量模式,使其能够适应多样化的应用场景。单一节点通信适用于点对点的数据交换,组播机制适合高效的一对多数据传输,而广播通常用于局域网内的信息传播和故障定位。 3. **参数可调性**:用户可通过修改参数来设定测试环境,例如设定传输速率、数据包时间间隔、源地址与目标地址等,从而更精确地再现特定的网络状况。 4. **资料文档**:附带的`changelog`文件记录了TFGEN的版本迭代历史,用户可通过此了解软件的改进与新增特性;`tfgen.hlp`文件提供使用TFGEN的详细说明和操作指南;`install.txt`文档则包含了安...

bnpack

​带标注的警察民警识别yolo模型,可识别警察和非警察2种标签,平均识别率81.54%

预览数据集中的图片,标注信息,模型训练代码可点击查看我的博客链接:https://blog.csdn.net/pbymw8iwm/article/details/161479372 模型训练和使用方法可免费技术咨询作者,主页可添加

前网易架构师-高司机
评论 1
收藏 已收藏
分享
返回顶部
Scorpiour
C++ 语言 65,214 成员 250,514 内容