
1 ritksm Nov 15, 2013 C99标准引入的- -老早的事情了... |
2 lotem Nov 15, 2013 c99 variable-length arrays |
3 txx Nov 15, 2013 很早的事情了 就是编译的时候丢栈顶....不推荐的做法... |
4 xieranmaya OP @ritksm 啊,真是这样吗,尼马我上大学时都07年了老师也没告诉我可以这么写啊啊啊啊 |
5 txx Nov 15, 2013 发现楼主是 大山中学的? |
6 xieranmaya OP |
7 xieranmaya OP @txx 不是我,是我妹子 |
8 skydiver Nov 15, 2013 @xieranmaya malloc是堆上分配的空间吧。应该不一样 |
9 txx Nov 15, 2013 不不不不不 它实际上还是使用的栈空间而不是堆空间...malloc 走的是堆空间.. 他编译的时候 就把这个变量丢到栈顶.. 然后根据n是多少 划掉相应的空间 如果n过大直接 stackoverflow 而且对于一般程序而言 栈空间远远小于堆空间的 所以不推荐这个做法 http://stackoverflow.com/questions/448844/variable-sized-arrays-in-c |
10 xieranmaya OP @txx 高手哇~~解惑了~~ |
11 46fo Nov 15, 2013 malloc 和 new malloc 只管分配内存 |
12 46fo Nov 15, 2013 不小心 按回车了 new 不单只分配内存 如果是对象还会调用 构造函数 而 malloc一个对象 不会。。。同理 delect 和 free 也不一样。。。 |
13 xieranmaya OP @xdeng 嗯嗯,new 和 malloc 是有区别的~ |
14 Golevka Nov 15, 2013 C99有VLA, C++14才把VLA正式纳入标准, 但是许多支持C++11的编译器都支持VLA作为自己的扩展特性. |
15 Ricepig Nov 16, 2013 via iPhone lz大学还在用turbo c吗?哈哈 |
16 Ricepig Nov 16, 2013 via iPhone 另外,小心stack overflow,这不是那个网站哦 |
17 treo Nov 16, 2013 ms的vs至今不支持vla |
18 guchy2012 Nov 16, 2013 C++里面把n设置为常量就可以这么用,而且是编译器行为。 |
19 xieranmaya OP @Ricepig 当年上大学的时候用的是VC6.0.。。。 |