标题:new的问题?
取消只看楼主
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
 问题点数:0 回复次数:6 
new的问题?
#include<iostream>
using namespace std;
char* newfuc(const char*,const char*);

int main()
{
  char* pi="perfect ";
  char* pj="c++!";
  cout<<newfuc(pi,pj)<<endl;
  getchar();
  return 0;
}

char* newfuc(const char* i,const char* j)
{
  char* ptr=new char[strlen(i)+strlen(j)+1]; //[]中的数 不管是多少都能正确输出,为什么? 甚至不定义为数组也能正确输出.
  strcpy(ptr,i);
  strcat(ptr,j);
  return ptr; //不是说 不能返回函数中的局部指针和引用吗? 那为什么这样可以呢? (希望我没记错)
}
搜索更多相关主题的帖子: new 
2008-10-09 20:04
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
哦 谢谢了
什么是 内存泄露啊?  我这个 代码 那里 内存泄露啊?
那 动态 分配的 []中的数 不管是多少都能正确输出,为什么? 甚至不定义为数组也能正确输出

[[it] 本帖最后由 newyj 于 2008-10-9 22:06 编辑 [/it]]
2008-10-09 22:05
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
char* ptr=new char[strlen(i)+strlen(j)+1];  
就是这句啊
2008-10-09 22:07
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
那我在 main函数中delete ptr 不知道 能否 释放掉
2008-10-09 22:17
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
不是说 它 是一直存在的吗?
char* ptr=new char[strlen(i)+strlen(j)+1];这句 要是这样写char* ptr=new char 函数也能 正确执行,为什么呢?
2008-10-09 22:25
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
但是 并没有 错误提示啊
2008-10-09 23:03
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
要是 char* ptr=new char 申请个 指针 指向char类型
再 strcpy(ptr,i);  strcat(ptr,j); 最后 我 再 flush 清 一下缓冲区 那输出的是什么呢?
2008-10-10 21:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-237276-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.654587 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved