加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 分配一个动态数组而不指定大小形成良好的代码?

发布时间:2020-12-16 05:22:28 所属栏目:百科 来源:网络整理
导读:以下简单的程序代码段使用 gcc-4.3.4提供了编译错误. 程序: int main() { char *ptr = new char[10]; char *ptr1 = new char[]; return 0; } 编译错误: prog.cpp: In function ‘int main()’: prog.cpp:4: error: expected primary-expression before ‘]
以下简单的程序代码段使用 gcc-4.3.4提供了编译错误.

程序:

int main() 
{   
    char *ptr = new char[10];     
    char *ptr1 = new char[];      
    return 0; 
}

编译错误:

prog.cpp: In function ‘int main()’:
prog.cpp:4: error: expected primary-expression before ‘]’ token
prog.cpp:3: warning: unused variable ‘ptr’
prog.cpp:4: warning: unused variable ‘ptr1’

但同样的编译与MSVC没有任何诊断信息.

所以我的问题是:
标准允许调用新的[]而不指定大小?还是MSVC中的一个bug?
有人可以从标准中提供一个参考,这将会最终确定上述代码示例是不正确的还是格式正确的?

我看了一下:

5.3.4新[expr.new]&
18.4.1.2数组形式[lib.new.delete.array]

但不能找到有关行为的确凿证据.

编辑:
添加语言律师标签.
我期待观察到的行为的答案,无论它是否有用,我完全知道这是没有用的,也不推荐.

解决方法

这在语法上是不正确的.

看一下syntax的新表达.

一个noptr-new-declarator必须在方括号之间包含一个表达式,一个表达式必须有一个标记.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读