使用指针 必须先new吗?不new能用吗?
1.我知道NEW指针是在预先不知道指针指向内存的大小,运行时临时开辟的空间
(但是我很少碰到过需要这种需要临时决定内存大小的问题)
2.指针new与不new在使用上到底有何不同?如何区分使用情况?
3.通常情况下,一个指针所指向大小都是固定的,这个我就搞不懂了,这时还需要NEW吗?
4.如果我有一个类,使用他也必须先NEW吗?
5.类指针在什么情况下该NEW,什么情况下不用NEW?请举例说明!
如果不new也能用,为什么还要NEW了?
例如
- C/C++ code
int a;int *p;p = &a;p->a;//这样就可以直接使用了?是不是指针在多数情况下不用NEW呢?
[解决办法]
指针是用来指向对像的。
用new分配空间,就是给指针指向一个内存。。
p = &a; 也指向了内存
[解决办法]
new跟指针没有关系。
new是在堆上分配内存,作用域由开发人员确定。
不new是在栈上分配内存(全局变量、静态变量除外),作用域由变量作用域确定。
ps:指针访问前,必须指向一段有效的内存,不管是堆的还是栈的。比如你上面的代码就是指向栈的内存。
[解决办法]
new申请堆空间。
指针, 指向 一块有效的内存空间就能使用。
[解决办法]
指针跟new没关系,你只要给指针指向一个有效的地址,指针就能正常使用了
[解决办法]
new的是对象而不是指针,new是为对象分配空间,指针只是其返回值,能不new当然不 new了.应为new了要自己delete
[解决办法]
p=&a,指向的内存已经定义过了,所以不需要new,但是你要是指向一个没有定义的内存,就需要new了~~
比如链表,当你p->next的时候,因为下一个内存还没有创建,所以必须先new,或者malloc申请内存,才可以使用~~
[解决办法]
[解决办法]