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 […]

为什么使用GWT.create()而不是新的?

GWT.create(SomeClass.class)和new SomeClass()什么区别? 你为什么要用另一个呢?

在iOS应用程序中创build文档文件夹内的文件夹

我只想在我的iPhone应用程序的文档文件夹中创build新的文件夹。 有人知道如何做到这一点? 感谢你的帮助!

你如何在C ++中“重新分配”?

我怎样才能重新realloc在C + +? 这似乎是缺less的语言 – 有new和delete但不能resize ! 我需要它,因为随着我的程序读取更多的数据,我需要重新分配缓冲区来保存它。 我不认为delete旧的指针和new更大的指针是正确的select。

string是Java中的对象,那么为什么我们不使用“新”来创build它们呢?

我们通常使用new关键字创build对象,如: Object obj = new Object(); string是对象,但我们不使用new来创build它们: String str = "Hello World"; 为什么是这样? 我可以用new的string吗?

为什么使用“新”会导致内存泄漏?

我首先学习了C#,现在我从C ++开始。 据我所知,C ++中的new操作符与C#中的不一样。 你能解释这个示例代码中的内存泄漏的原因吗? class A { … }; struct B { … }; A *object1 = new A(); B object2 = *(new B());

在什么情况下,我使用malloc vs新?

我看到在C + +有多种方式来分配和释放数据,我明白,当你打电话给malloc你应该free打电话,当你使用new运营商,你应该与delete配对,这是一个错误混合两者(例如free()呼叫free()用new运算符创build的东西),但我不清楚什么时候应该使用malloc / free ,何时使用new / delete在我的真实世界程序中。 如果您是C ++专家,请告诉我您在这方面遵循的任何规则或惯例。

为什么C ++程序员要尽量减less“新”的使用?

我偶然发现堆栈溢出问题内存泄漏与std ::string时,使用std :: list <std :: string> , 其中一个评论说: 停止使用new这么多。 我看不出任何你在任何地方使用新的理由。 您可以在C ++中创build对象,这是使用该语言的巨大优势之一。 您不必分配堆栈中的所有内容*。 不要像Java程序员那样思考。 我不确定他的意思。 为什么应该尽可能经常用C ++的价值创build对象,内部又有什么不同? 我误解了答案吗? *评论原本说“堆”,这已经由主持人纠正到预定的“堆”。