Categories

请点击这里

如何恢复XP的MBR

如果在XP 的机器上装了 Ubuntu 的 grub 的Multiboot, 现在不想要了怎么办?

当然,可以用 XP 的安装盘选 repair 就行。不过万一 XP 安装盘不在手边,就麻烦了。直接删除 ubuntu 分区,就无法启动电脑了。怎么办?

1. 下载 MBRFIX.EXE

2. 解压缩;

3. 在xp command 模式下, 输入这个命令:

MbrFix /drive 0 fixmbr /yes

’0′表示是第一块硬盘,

4. 重启动,grub 的 mbr 就给修复了,直接进了 XP, 这时候 ubuntu 分区随便删吧。

无盘修复 Vista MBR

Vista 分区调整一直是Vista笔记本用户的噩梦,你用 Gparted 调分区就会直接造成问题。Vista 把一堆系统文件放在分区尾,用 Vista 自带的磁盘管理根本 shrink 不出多大空间,你如果用第三方分区软件调整,Vista 立马就起不来了。本来是个小问题,但 Vista 必须要用安装盘来修复,而笔记本厂商现在基本不配备 Installation Disk 了,而像我用的 thinkpad 虽然有光盘,但仅仅只是 Recovery Disk,根本帮不上忙。所以大家只好浪费大把时间从头回复,这不是20 ,30 分钟啊,是两个三个小时!真没人性啊。

今天意外在 Neosmart 网站发现他们 Host 了一个微软用来解决这种问题的 Vista Recovery Disk 的镜像 BT 种子。颇让人感慨,这么久微软终于知道民间疾苦了啊。有需要就下载刻盘吧,这个是合法的。

Windows Vista 32-Bit (x86) Recovery Disc Torrent

Windows Vista 64-Bit (x64) Recovery Disc Torrent


C++ 的 delete 和 delete [] 简明解释

不少程序员菜鸟(其实包括不少老鸟)对于 delete 和 delete[] 的区别不甚了了,其实也没关系,记得 new 的就用delete 删, new [] 就用 delete [] 删就对了。

那么两者的区别到底在哪里呢?

说白了很简单,数组就是一块连续内存块, delete 这个命令就是删除一个连续内存块,所以无论 delete 的参数是什么,不管他是什么指针,这个内存块会被删除是毋庸置疑的。而 delete[] 相比 delete 会多做一件事,就是在删除这个内存块前,析构每个元素。

所以,对于简单数组,比如 char, int, float 数组,调用 delete, 还是 delete[] 不会有什么区别。

但是对于对象数组,这个就大不同了,你必须用delete [] 释放这个数组,因为如果用 delete 释放,你只会删除掉这个内存块,而没有触发数组对象的析构函数,造成内存泄漏。(当然,因为对象数组也是一个对象指针,所以 delete 会对数组第一个元素调用析构函数,而其他元素都会泄漏。)

所以逻辑推理下来,delete [] 绝对不可能是对于 delete 的简单调用(否则肯定会造成对第一个元素析构的重复调用),在编译实现上肯定是单独的一套。所以万一需要重载 new, delete, new[], delete[], 我们必须全部都重载,而不能仅仅重载 new, delete, 然后希望 new[], delete[] 会调用它们。