当前位置:  开发笔记 > 编程语言 > 正文

为什么g ++会编译这个?

如何解决《为什么g++会编译这个?》经验,为你挑选了3个好方法。

最近,在我累了之后,我写了下面的代码:

GLfloat* array = new GLfloat(x * y * z);

当然应该是:

GLfloat* array = new GLfloat[x * y * z];

(注意方括号而不是括号.)

据我所知,第一种形式无效,但g ++编译了它.当然,它吐出了一个完全不可理解的段错误,但它汇编了.

为什么?



1> dirkgently..:
GLfloat* array = new GLfloat(x * y * z);

创建一个名为array对象的对象,GLfloat其值为x * y * z.



2> Charlie..:

好吧,结果new T()是a T*,所以new GLFloat会返回一个GLFloat*.只要x*y*z有效传递给GLFloat构造函数,它就是有效的代码.



3> 小智..:

它与以下类似:

int * p = new int(42);

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有