【发布时间】:2011-04-16 15:15:08
【问题描述】:
auto a = (Foo<T>*)malloc(sizeof(Foo<T>));
auto *b = (Foo<T>*)malloc(sizeof(Foo<T>));
我认为模板的存在并不重要,但问题是:a 和 b 是否属于同一类型?
g++ -std=c++0x -Wall (4.4) 没有给出任何错误或警告,但我没有运行该程序,所以我不知道它是否会做同样的事情。
这是否意味着对于a,auto 是Foo<T>*,但对于b,auto 是Foo<T>?
【问题讨论】:
-
只是想知道:为什么
(Foo<T>*)malloc(sizeof(Foo<T>))而不是new Foo<T>? -
什么是“新”东西?开玩笑。它是一些关于消息传递的多线程代码的一部分,我想要简单快速的规则。 “免费”只是释放内存,让你知道你有责任做任何你可能需要做的事情。但是,“删除”可以调用虚拟析构函数(较慢),并且可以调用可能有副作用的析构函数,随机破坏多线程代码。真的只是这样我才不会意外地将成员变量放入具有副作用的析构函数的消息中;没有通过阅读代码显而易见。 “删除 p;”太神秘了。