1楼:
字符串尾部应该有个'\0'作为字符串结尾标志,所以申请空间应该多申请一个:
char*temp_name=new char[y+1];
在for(){}循环后面,加上temp_name[i]='\0';就行了.
c++ char*类型new的内存释放出问题了
2楼:
point = new char[5];时 point指向bai了du一新分配的内存
point = "fda";时,zhipoint抛弃了dao刚new的内存,指向了"fda"所在地址。fda"本身已经被分
回配好答内存。所以刚才的new内存已经失去意义,因为point已经不再指向它了。这也是造成内存泄露的一个原因,因为刚动态分配的那块内存已经没办法释放了(被point指针抛弃了,没办法再找到这块内存地址,也就没法delete)。
"fda"的内存不是动态分配的,所以delete时出错。
这要一个一个字符来操作:point[0] = 'f'; point[1] = 'd'; point[2] = 'a'; 或者参考 jxq61 兄的回答。(注意,这里才是真正的把字符存到新分配的内存里)
3楼:匿名用户
point 是指针。指向了bai一du
个字符串。这个字符串是zhi占六个字节的。daopoint = new int[10]; 这个是申请了版
一个动态内存,int型的权占4个字节。 int[10].只是一个整形变量,并不是申请了10个int型的内存。而是,只申请了一个。六个字节的东西往四个字节里存,能不出错吗?
我是学c语言的,c++只是看了看。我按照c语言的东西来解释的。希望对你有用。
4楼:匿名用户
point = new int[10] 表示你分配了 10个int型的空间,你给它赋字符串肯定错了。
就如 int s[5] = "hello"
5楼:萬哩挑壹
delete q;//释放
原来来的
delete p;//释放现在的源 '
记住:内存释放了之后不能再使用bai该块内存,最好在释du放之后将指针zhi变量赋dao值为空 。
delete q;
q= null;
c++是在c语言的基础上开发的一种面向对象编程语言,应用广泛。c++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准c++14于2014年8月18日公布。
其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
6楼:匿名用户
point = new char[5];
point = "fda";//这句来话注销了就源对了 不知道为什么
point = "fda"
应改为:
memmove( point, "fda", 3);
或:strcpy( point, "fda");
在最前面加上:
#include "string.h"
7楼:匿名用户
程序在析构函数中释放字符数组的时候失败了,程序试图去释放尚未分配的内存空间
关于c++动态内存分配 这样写会不会出什么问题? char *a = new char []; a
8楼:匿名用户
请在new char的时候就写好申请内
存的大小new char[size], 编译器并不会从后文或者运行时推断需要多少内存
我没查到不在里写上申请内存大小时编译器会怎么处理, 看上去应该会报错才对, 能通过编译的话我猜可能是当作0或者1或者某个默认值, 总之申请到的内存不一定能存得下从cin接收的字符串
即使不填上要申请的内存大小也能正常运行可能只是char *a指向的那一块内存刚好没有被用到而已, 从cin输入的字符串足够长的话多半就会报错了
请问在c++里,为什么char *p=new char[n]需要delete而char *p="a
9楼:匿名用户
你需要关注一些内存分配,第一种在堆里分配了空间所以只能由程序员手动**,第二种不是在堆内存分配空间,具体在**分配的不记得了,是不需要**的
10楼:残留的信仰
是的,new出来的空间是创建在堆上,是需要操作者本人进行清除的
而char *p="abcde"创建的空间是在栈上,是由系统自动清理
11楼:_玄武酷酷熊
第一个是分配在堆上,需要人工释放,第二个一般是分配在栈上,由os释放
c++问题在类的构造函数里char*要不要new一下在赋值?详细**如下:
12楼:匿名用户
这个是要看传进来char*指针的生存期了,如果比这个class要长是不用new的,如果传进来指针很快就销毁了,那就要new一个新的出来,你的例子是不需要的,const的指针生存期是全局的
13楼:笑年
不必要。
因为ch是指针。而s也是指针
只是把ch的指针指向s的指针所指的值
也就是说只是移动ch的指针,并未分配内存
c++ 语言中char a="a"; 和char a='a' 有什么区别
14楼:匿名用户
char a='a' 是合法的
char a="a' 是不合法的
char型不能为字符串,只能为字符
15楼:匿名用户
“a”表示字符串,字符串长度等于内容加‘\0’的长度,所以是占用两个字节内存。‘a’表示字符,占用一个字节内存。而一个字符变量长度永远为1字节,所以前者写法错误,应该写成 char *a = "a"。
16楼:匿名用户
前面是错的。“a”为const char *, “a”= ‘a'+ '\0'。
(char*)问题
17楼:匿名用户
unsigned int ab;
这样得到的ab是一bai个du无符号整型zhi的变量,&ab是ab这个变量的dao地址,也就是一个“unsigned int *”类型的指针回。“(unsigned char*)”的意答思是强制转换,在这里将“unsigned int *”类型转为“unsigned char *”类型。
可参考下面**:
unsigned int ab;
unsigned int *pui = &ab;
unsigned char *puc = (unsigned char *)pui;
18楼:匿名用户
(unsigned char*)是为了指针强转类型,也就是把一个其他类型的指
针转换为一个unsigned char*。另外,&ab是取内ab变量地址的容意思。指针跟地址你基本可以认为是一个东西。
所以这句话的意思就是把变量ab的地址转成一个unsigned char*。
不过我觉得这样做实在不好~~
19楼:匿名用户
指针变量的大小是不是就是unsigned char.
通用用sizeof(unsigned char*)=4个字节来存储一个指针变量?
把一个整型变量通过这种方式来变成一个指针变量
c++char型数组问题
20楼:天一弦剑
纠正你bai的**
du:int n;
cin >> n;
char *string=new char[n + 1];
for(int i=0;i试吧,zhi 记住:字符dao串是版以'\0'结束权的。
21楼:匿名用户
我倒是奇bai怪了,你这程序能编译?du首先cin<< 输入应zhi该是cin>>吧,然后你的
daoc从哪蹦内出来的?
容声明在哪? 可能是你的程序不给完整吧,在别的地方声明了?那得标示出来,要不怎么看你程序的问题在哪咯?
最后,你用了自由存储空间,却没有用delet释放内存归还给计算机。。。
22楼:匿名用户
你的c是什么啊
而且cin的格式应该是cin>>n;
23楼:谷岑僪昭昭
纠正你的**:
intn;
cin>>
n;char
*string=new
char[n
+1];
for(int
i=0;i,
记住:字符串是以
回'\0'结束答的。
c++ new char指针的问题
24楼:匿名用户
#include
#include
using namespace std;
char* dy(char b)
void main()
25楼:匿名用户
很奇怪,为什么new的c,delete的b?
char a 3,b 6,c c a b《2 C的二进制值是什么
1楼 苍紫幽蓝 首先运算符优先级 左移 比 异或 高,所以c a b 2 先执行b左移2位操作,b的二进制为110,左移两位11000然后执行异或操作 同一个位置的二进制不同取1,相同取0 ,a的二进制为 011,所以011 11000 00011 11000 11011 所以答案是11011 设有...
C++中,关于NEW关键字的使用
1楼 水煮的肉片 1 前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。 2 不加new在堆栈中分配内存 3 大程序用new,小程序直接申请 4 只是把对象分配在堆栈内存中 5 new必须delete删除,不用new系统会自动 内存 2楼 匿...
关于switch语句的使用问题,关于C语言问题中switch语句的使用问题
1楼 下海的孤魂 switch结构里少了default语句。 应该如下这样,所有case完成后,最下面加上一个default。 以后请教大家时,出错信息里把行数也拷贝上来,可以更快地看出问题出在 。比如 warning c4060。。。 之前,应该还有出错的行数信息的。 switch int a 1...