void main()
{
char *szBuf = new char[100];
return;
}
比如这个生成的Test.exe
1 我没有delete []szBuf,Test.exe退出的时候,系统会自动释放szBuf吗?
2 哪种exe退出时new的东西系统会释放,哪种exe退出时new的东西系统不会释放?
解决方案 »
- 工具栏背景怎么重绘?
- <OBJECT>问题
- XML访问不到节点的问题,请各位网友帮忙看看!
- 怎么样在VC开发的DLL和PB开发的应用程序之间建立一个数据通道(ROUTER)-在线等待, 答者有分!
- 数据库问题!!数据插入
- 有没有这样的软件?
- WIN2000下隐藏文件的扩展名后,如何得到文件的全名??
- 请问哪有二进制文件写入读出的例子?
- 求教关于C++函数操作符重载问题
- 你是一个Visual C++的初学者吗?
- CString sf1="90464.00"; CString sf2="541989.20"; float t1=atof(sf1); float ft2=atof(sf2); float ft3=ft1+ft2; 结果ft3 结果怎么会是 63245
- LPTHREAD_START_ROUTINE 大家帮忙我看看
void main()
{
CreateProcess()//进程1中new: char *szBuf = new char[100];
CreateProcess()//进程2
return;
}还有1个问题,就是上面的进程2可以delete进程1中new的szBuf吗?
new分配的内存只能在本进程中delete。
2个进程的进程堆是不同的地址空间,应该不能在不同地方delete...
养成不释放内存的习惯,容易在改释放内存的时候忘了释放,从而造成内存泄露。
每个进程会有自己的2GB虚拟地址空间(win32默认),自己只能操作自己空间里的内存,无法碰到别的进程的内存。除非使用特定的API函数,如WriteProcessMemoryEx等。
因此,多进程的架构在安全保护可靠性上,要比多线程架构要好。但是开销会更大。