社区
C语言
帖子详情
const char *内存释放问题
WYLLO535825003
2011-10-15 04:23:55
今天我const char *first=new char(30),如何释放这些分配的内存
...全文
679
10
打赏
收藏
const char *内存释放问题
今天我const char *first=new char(30),如何释放这些分配的内存
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caddor2011
2011-10-16
打赏
举报
回复
看5楼
vc 6 无法通过
vs是可以通过的
[Quote=引用 9 楼 wyllo535825003 的回复:]
pid_t pid;
pid=fork();
//const char *first_web=new char(30); //为子进程分配内存块
//first_web=_web[0].c_str();
char *first_web=new char(30);
first_web=const_cast<char *>(_web[0].c_str());
if(pid<0)
{
c……
[/Quote]
WYLLO535825003
2011-10-15
打赏
举报
回复
pid_t pid;
pid=fork();
//const char *first_web=new char(30); //为子进程分配内存块
//first_web=_web[0].c_str();
char *first_web=new char(30);
first_web=const_cast<char *>(_web[0].c_str());
if(pid<0)
{
cout<<"线程1无法启动子进程"<<endl;
}
if(pid==0)
{
if(execlp("./ping_thread1","./ping_thread1",first_web,_sletime,NULL)==-1)
{
cout<<"子进程1启动失败"<<endl;
}
}
if(pid>0)
{
delete []first_web;
_id.push_back(pid);
}
源代码大家看下,就是内存回收不了
星羽
2011-10-15
打赏
举报
回复
[Quote=引用 7 楼 quwei197874 的回复:]
const char* p=new char(65);
去掉const,加上表示p指的内容是固定的,你是不能delete的,或用const_cast<char*>转换一下
[/Quote]
谁说const char* 不能delete的 - -b
quwei197874
2011-10-15
打赏
举报
回复
const char* p=new char(65);
去掉const,加上表示p指的内容是固定的,你是不能delete的,或用const_cast<char*>转换一下
WYLLO535825003
2011-10-15
打赏
举报
回复
还是不行啊
caddor2011
2011-10-15
打赏
举报
回复
const char* p=new char(65);
cout<<*p<<endl;
delete p;
p=NULL;
p=new const char(66);
cout<<*p<<endl;
delete p;
p=NULL;
Vincent_Song
2011-10-15
打赏
举报
回复
用delete如果是多个内存单元需要使用[]前置符。
希望能够帮到你!
b_duan
2011-10-15
打赏
举报
回复
new和delete对应
星羽
2011-10-15
打赏
举报
回复
delete first;
你这个new 有问题吧,你是想new 字符串吗
那么应该是
new char[30]
而不是new char(30)
MYMGrub
2011-10-15
打赏
举报
回复
直接delete[] first;不可以吗??
C和C++的
内存
操作小贴士(一):
const
char
*的
内存
释放
问题
C和C++的
内存
操作一直是困扰开发人员的老
问题
,基本概念相信老司机们都很清楚了,在这里就不做过多的描述了,只是把在实际开发中可能遇到的一些小
问题
的案例列举下,供大家参考。“C和C++的
内存
操作小贴士”这个系列会一直做下去,不定期更新,欢迎大家来一起学习讨论。 C和C++的
内存
操作小贴士(一):
const
char
*的
内存
释放
问题
一般在使用指针类型后,为避免出现
内存
泄漏,都需要手动...
没有重写“复制构造函数”或重载赋值运算符所引起的“
内存
重复
释放
”的错误
#include <iostream> #include <string> #include <cstring> using namespace std; class MyString {
char
* p; public: MyString(
const
char
* s) { cout << "构造函数被调用" << s << endl; if (s) { p =.
C++引用与类对象
还有一点是
const
引用类型的形参的一个属性,假设实参的类型与引用参数类型不匹配,蛋壳被转换为引用类型,程序将创建于i个正确类型的临时变量。因此改代码是可行的。在version1函数中,该函数的两个形参s1和s2的类型都是
const
string& ,但是实参为input”****“的类型分别为string和
const
char
*。因为input的类型为string,因此让s1指向它没有任何
问题
,但是程序为什么能够接收
const
char
*类型指针赋给string引用呢?
C++
内存
管理基石:POD类型与面向对象语义解析
这里有一个经验,若delete/free出
问题
了,若
释放
的位置没有
问题
,那就不是这两者导致的,就比如说这里delete的指针_start没有变化过,一直指向空间开始的位置(因为不能部分
释放
),那就不是delete的
问题
(比如说空间开少了越界了也会在delete处报错)这里肯定是和扩容有关系的,插入第5组数据一定会发生扩容 这里调试时将旧空间的数据拷贝给新空间这一步是没有
问题
的,但是旧空间delete后新旧空间都出现
问题
了。这里主要是浅拷贝的
问题
,只不过层次更深,这里memcpy出现了
问题
。
2020-12-28
哈喽,大家好!最近在循环处理文件的时候遇到了W2A导致堆栈溢出的
问题
,跟大家简单交流下。 1、起因是需要对几万张.raw文件进行批量处理,所以用到了CFileFind类和fopen等函数,中间就涉及到路径的
问题
,CString转
const
char
*,最简单便捷的就是W2A了; 2、首先USES_CONVERSION宏定义所使用的
内存
是通过函数alloca分配的,而alloca的
内存
是在栈空间内部分配,VC的编译器默认的编译空间为2M。故W2A使用alloca在栈上分配
内存
,退出生命周期后才会
释放
所占用
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章