-
考虑:
char *p=NULL;
free(p) // or
delete p;
如果我使用会发生什么free
and delete
on p
?
如果一个程序执行时间很长,比如10分钟,有什么办法可以将其运行时间减少到5分钟吗?
关于 new/delete 和 malloc/free 的一些性能说明:
malloc 和 freedo not分别调用构造函数和解构函数。这意味着您的类不会自动初始化或取消初始化,这可能很糟糕(例如未初始化的指针)!不过,这对于 char 和 double 等 POD 数据类型来说并不重要,因为它们实际上没有构造函数。
新建和删除do调用构造函数和解构函数。这意味着您的类实例会自动初始化和取消初始化。然而,通常情况下,性能会受到影响(与普通分配相比),但这是为了更好的结果。
我建议与 new/malloc 的使用保持一致,除非你有理由(例如 realloc)。这样,您的依赖性就会减少,从而减少代码大小和加载时间(不过,只减少了一点点)。另外,你不会因为释放用 new 分配的东西或删除用 malloc 分配的东西而搞砸。 (这很可能会导致崩溃!)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)