Redian新闻
>
发现了一个编程思路,解决c++内存管理问题
avatar
发现了一个编程思路,解决c++内存管理问题# Programming - 葵花宝典
d*y
1
http://www.foxnews.com/world/2018/05/28/flight-school-staff-arrested-after-allegedly-kidnapping-illegal-student-trying-to-fly-him-back-to-china-report.html
就是一个21岁中国人来学飞行,交了7万美刀学费,visa也是有效的,学校有两个老师
要驱逐他,因为他英语不好,把他送上回到中国的飞机。然后他报警了,最后没有驱逐
成功。大家怎么看? 预测又一堆fans来说他是个间谍
我来update一下。读了Foxnews 所有的comments. 大部分人都是认为学校老师驱逐的
做法是违法的,他英语不好,学校可以fail它,学校没有权利驱逐学生,更何况他的
visa有效。只有少数人说驱逐的好,理由是他一定是个间谍。
那么多人睬我干啥,只有在huaren论坛上看到好多人批评他英语不好。。。英语不好什
么时候变成了驱逐一个学生的理由了。他能不能开飞机要看他能不能拿到certificate
avatar
l*n
2
今年上半年失业。当时是H1-B签证。
现在我转成F-1,最近手紧,于是联系我原来的学校去当零时instructor.
他们给我办J-1. 我的问题时,我想明年去读MBA, 那么就需要转回F-1, 上这里看了一
下,还是不明白,到底要不要出境?如果不行,我就继续在社区学校挂着算了。费不着
为了几个钱,搞这么多周折。
XDJM们帮一下忙,看一下该怎么处理?
谢谢
avatar
s*2
3
in NJ, 从primary home借的equity line钱超过十万,100%用来买另外一个房子。
利息是
tax deductible的吗? 而且如何证明是用来买房的呢? 谢谢!
avatar
t*u
4
我第一次在上海签证通过的,然后现在visa今年6月底过期,6月初到中国,请问我可以
在广州中信代签吗?还是必须在上海中信代签? 中信周六周日提供代签的服务吗?还
是只有周一到周五?多谢!
avatar
N*K
5
比如一个类 TestClass
class TestClass
{
int m_value;
std::vector m_DataArray;
// memeber function
}
可以改为:
struct TestClassMemberVarible
{
int m_value;
std::vector m_DataArray;
}
class TestClass
{
std::shared_ptr m_MemberVarible;
// memeber function
void Share(TestClass& InputClass)
}
如果所有的类都这么设计 可以不用写 share_ptr 和 new 直接用堆栈
真正的类成员都在heap 所谓的类只是一个壳子+shared_ptr+函数 这样永远不会形成
shared_ptr 循环引用
也可以建立 一个类的array 类似 存在array的referece
TestClass A;
TestClass B;
std::vector SharedClassArray(2);
SharedClassArray[0].Share(A);
SharedClassArray[1].Share(B);
avatar
w*p
6
see Herb's way:
http:channel9.msdn.com/Events/GoingNative/2013/My-Favorite-Cpp-10-Liner
and see that over use of shared_ptr deteriorates to equivalence of mark-and-
sweep GC:
http:www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf
also shared_ptr new has mutex to protect [pointer+counter] operations so it'
s slower
avatar
k*g
7
http://c2.com/cgi/wiki?HandleBodyPattern

【在 N******K 的大作中提到】
: 比如一个类 TestClass
: class TestClass
: {
: int m_value;
: std::vector m_DataArray;
: // memeber function
: }
: 可以改为:
: struct TestClassMemberVarible
: {

avatar
g*e
8
c++本来就是让你手动管理内存的,这个搞还不如写java
avatar
N*K
9
具体说说?

【在 g*********e 的大作中提到】
: c++本来就是让你手动管理内存的,这个搞还不如写java
avatar
N*K
11
具体说说?

and-
it'

【在 w******p 的大作中提到】
: see Herb's way:
: http:channel9.msdn.com/Events/GoingNative/2013/My-Favorite-Cpp-10-Liner
: and see that over use of shared_ptr deteriorates to equivalence of mark-and-
: sweep GC:
: http:www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf
: also shared_ptr new has mutex to protect [pointer+counter] operations so it'
: s slower

avatar
k*g
12

Basically it is doing what auto_ptr, unique_ptr and shared_ptr is doing
today.
However, the Handle-Body Idiom has a long history. Each software framework
implement it their own way, and combine it with framework-specific features
not found on the STL / C++11 smart pointers.
The user can only manipulate handles, and the handle doesn't directly own
the resource. Instead, the handle owns a reference-counted object (
implemented with an atomic variable) which then owns the actual resource.
When the user performs an assignment, as in the C++ assignment operator = ,
one of the three can happen:
(1) Copy = Share
(2) Copy = Move (taken away from the original handle and transferred to the
new handle)
(3) Copy = Copy-on-Write, activated by a pair of explicit calls to "
BeginWrite" and "EndWrite" (which would be used by a convenience RAII helper
to ensure timely release.)

【在 N******K 的大作中提到】
: 具体说说?
:
: and-
: it'

avatar
N*K
13
你觉得我这么搞 有什么问题么?
我觉得挺好的 类全都变成了壳子->handle

features
,

【在 k**********g 的大作中提到】
:
: Basically it is doing what auto_ptr, unique_ptr and shared_ptr is doing
: today.
: However, the Handle-Body Idiom has a long history. Each software framework
: implement it their own way, and combine it with framework-specific features
: not found on the STL / C++11 smart pointers.
: The user can only manipulate handles, and the handle doesn't directly own
: the resource. Instead, the handle owns a reference-counted object (
: implemented with an atomic variable) which then owns the actual resource.
: When the user performs an assignment, as in the C++ assignment operator = ,

avatar
N*K
14
为啥要手动管理? shared_ptr 吃干饭的?
c++有栈概念 或者说{} 非常好 加上 shared_ptr 可以随时干掉不用的对象

【在 g*********e 的大作中提到】
: c++本来就是让你手动管理内存的,这个搞还不如写java
avatar
k*g
15

没问题,很好很强大,我只是善意提醒一下这方法有名堂,别人已经用了很多年了。

【在 N******K 的大作中提到】
: 你觉得我这么搞 有什么问题么?
: 我觉得挺好的 类全都变成了壳子->handle
:
: features
: ,

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。