每个程序都有自己独立的4G虚拟内存,只有当你真正申请的时候,才会把内存分给你
#include "stdafx.h" //********************************************************************** int main(int argc, char* argv[]) { printf("%s - %s - %s",argv[0],argv[1],argv[2]); getchar(); return 0; }
#include "stdafx.h" #include "windows.h" //打开子进程函数 BOOL CreateProcess(PTCHAR route,PTCHAR szCommandLine) { //定义两个结构体 STARTUPINFO si; PROCESS_INFORMATION pi ; //初始化结构体 ZeroMemory(&pi,sizeof(pi)); ZeroMemory(&si,sizeof(si)); //si结构体的cb 必须要赋值 si.cb = sizeof(si); //创建子程序 返回成功与失败 if(!CreateProcess( route, //打开程序的路径 szCommandLine, //命令行参数 NULL, //进程相关的属性(是否可以被继承) NULL, //线程程相关的属性(是否可以被继承) FALSE, //创建子进程,允不允许子进程继承父进程的句柄表 0, //填NULL子进程共享父进程的控制台 NULL, NULL, //创建的子进程获取的当前目录是父进程的当前目录,如果子进程想得到自己真实的当前目录此处不能选NULL &si, //创建子进程的详细信息 &pi) //存储的是进程ID,线程ID,进程句柄,线程句柄 ) {//打印错误信息 printf("Error:%d\n",GetLastError()); return FALSE; } //打印线程进程id,线程id,进程句柄,线程句柄 printf("%d %d %d %d\n",pi.dwProcessId,pi.dwThreadId,pi.hProcess,pi.hThread); //释放句柄 CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return TRUE; } int main(int argc, char* argv[]) { TCHAR route[] = TEXT("C://Program Files//Internet Explorer//IEXPLORE.exe"); //命令行参数,记得加个空格以防不认识参数 TCHAR szCmdLine[] = TEXT(" http://www.baidu.com/"); CreateProcess(route,szCmdLine); //程序路径,命令行参数 getchar(); return 0; }