char* s 问题
char * s1;
s1 = new char(100);
int slen = sizeof(s1);
请问slen为什么是4;
[解决办法]
s1是指针,指针的长度为4
[解决办法]
char * s1;
s1 = new char(100)
char s1[100];
有什么区别啊?
用new操作符申请的内存空间分配在堆上.
普通的静态数组,内存分配在堆栈上
[解决办法]
s1是个指针而已~~ sizeof(s1)就是4
[解决办法]
s1是一个字符的指针,指针的长度为4
[解决办法]
引用LZ的: "我动态分配后在s1中间会出现 "\0 ",我是想要知道我当前分配的空间的大小,不是字串的大小,有什么办法嘛 "
1、你动态分配的,怎么会不知道大小?
2、就算不知道,被封装了,那方法应该返回分配的结果,即分配了多大,这个是设计问题
3、指针是自由的,指向哪里,在哪里停止是你决定的(除了越界引发操作系统异常)
4、char s1[100]; 后,数组的内容是不定的,这时候用strlen取出的长度是不准确的,而且值不是固定的,这时候应该用 sizeof 来取大小
5、至于在堆上分配的内存,因为没有算法保证2次分配的空间是连续的,或者能明确区分每次分配的内存,因此。。。除了1、2条说的,无解