Tag: 新的运营商

malloc&放置新的与新的

过去几天我一直在研究这个问题,到目前为止,除了教条式的论据或对传统的诉求之外,我还没有真正发现任何有说服力的东西(即“这是C ++的方式!” )。 如果我正在创build一个对象数组,那么使用什么是令人信服的理由(除了缓解): #define MY_ARRAY_SIZE 10 // … my_object * my_array=new my_object [MY_ARRAY_SIZE]; for (int i=0;i<MY_ARRAY_SIZE;++i) my_array[i]=my_object(i); 过度 #define MEMORY_ERROR -1 #define MY_ARRAY_SIZE 10 // … my_object * my_array=(my_object *)malloc(sizeof(my_object)*MY_ARRAY_SIZE); if (my_object==NULL) throw MEMORY_ERROR; for (int i=0;i<MY_ARRAY_SIZE;++i) new (my_array+i) my_object (i); 据我所知,后者比前者更有效率(因为你不会不必要地将内存初始化为一些非随机值/调用默认构造函数),唯一的区别就是你用: delete [] my_array; 另一个你清理: for (int i=0;i<MY_ARRAY_SIZE;++i) my_array[i].~T(); free(my_array); 我出于一个令人信服的理由。 诉诸C ++(而不是C)的事实,因此不应该使用malloc和free […]

如何在Go结构中初始化成员

我是Golang的新手,所以这个configuration让我疯狂: import "sync" type SyncMap struct { lock *sync.RWMutex hm map[string]string } func (m *SyncMap) Put (k, v string) { m.lock.Lock() defer m.lock.Unlock() m.hm[k] = v, true } 后来,我只是打电话给: sm := new(SyncMap) sm.Put("Test, "Test") 在这一刻,我得到一个零指针恐慌。 我已经通过使用另一个函数,并在new()之后调用它: func (m *SyncMap) Init() { m.hm = make(map[string]string) m.lock = new(sync.RWMutex) } 但我想知道,如果有可能摆脱这种样板初始化?

如何在C#中默认浏览器中打开

我正在devise一个小型的C#应用​​程序,里面有一个网页浏览器。 我目前在我的计算机上有我所有的默认设置,说谷歌浏览器是我的默认浏览器,但是当我点击我的应用程序中打开一个新窗口中的链接,它会打开Internet Explorer。 有没有办法使这些链接在默认浏览器中打开呢? 或者我的电脑有问题吗? 我的问题是,我有一个webbrowser在应用程序,所以说你去谷歌和键入“堆栈溢出”,并右键单击第一个链接,然后单击“在新窗口中打开”它在IE中而不是Chrome打开。 这是我编码不正确,或者有一个设置不正确,在我的电脑上 ===编辑=== 这真的很烦人 我已经知道,浏览器是IE浏览器,但我以前工作得很好。 当我点击一个链接它在铬打开。 我当时正在使用sharp开发来制作应用程序,因为我无法启动c#express。 我做了一个新的Windows安装,因为我在我的应用程序不太远,我决定重新开始,现在我有这个问题。 这就是为什么我不确定它是否是我的电脑。 为什么IE会在单击链接时启动整个浏览器,而不是在默认浏览器中打开新链接?

在Ruby中,“新”和“初始化”之间有什么关系? 初始化时如何返回nil?

我想要的是: obj = Foo.new(0) # => nil or false 这不起作用: class Foo def initialize(val) return nil if val == 0 end end 我知道在C / C ++ / Java / C#中,我们不能在构造函数中返回一个值。 但是我想知道在Ruby中是否可能。