|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <cstring>
#pragma warning(disable:4996)
using std::cout;
using std::cin;
using std::endl;
struct stringy
{
char * str; // points to a string
int ct; // length of string (not counting '\0')
};
void set(stringy & p, const char str[]);
void show(const stringy & p, const int n = 1);
void show(const char * pstr, const int n = 1);
int main()
{
stringy beany;
char testing[] = "Reality isn't what it used to be.";
set(beany, testing);
show(beany); // prints member string once
show(beany, 2); // prints member string twice
testing[0] = 'D';
testing[1] = 'u';
show(testing); // prints member string once
show(testing, 3); // prints member string twice
show("Done!");
delete[] beany.str; // 是否需要delete??????????????????
return 0;
}
void set(stringy & p, const char str[])
{
p.ct = strlen(str);
p.str = new char[p.ct + 1];
strcpy(p.str, str);
}
void show(const stringy & p, const int n)
{
for (int i = 0; i < n; i++)
cout << p.str << endl;
}
void show(const char * pstr, const int n)
{
for (int i = 0; i < n; i++)
cout << pstr << endl;
}
各位大佬,可以请教一下上文的delete这一行需不需要呢?
不写这一行,程序依然可以正确运行。
new和delete是不是一定要成对出现的呢?如果不是,什么情况下不用写delete?
需要。你在椎中用new申请了一块内存,需要用delete来手动释放
如果不写delete,那么只有在整个程序结束时才释放内存
任何情况下都建议将new和delete配对使用
|
|