c++使用char a new char的问题。。急

2021-01-01 19:26:51 字数 4691 阅读 9276

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...