每个应用都有自己独立的内存空间,其内存空间一般都有以下几大区域:
在程序运行过程,为了能够自由控制内存的生命周期、大小,会经常使用堆空间的内存。
malloc/free:
#include <iostream> using namespace std; int main() { int *p = (int *) malloc(4); *p = 10; free(p); //char *p = (char *) malloc(4); //*p = 10; //*(p + 1) = 11; //*(p + 2) = 12; //*(p + 3) = 13; //free(p); getchar(); return 0; }
new/delete:
#include <iostream> using namespace std; int main() { int *p = new int; *p = 10; delete p; //char *p = new char; //*p = 10; //delete p; //char* p = new char[4]; //delete[] p; getchar(); return 0; }
memset 函数是将较大的数据结构(比如对象、数组等)内存清零的比较快的方法。
#include <iostream> using namespace std; int main() { int size = sizeof(int) * 10; int* p = (int*)malloc(size); // 从p地址开始的连续4个字节中的每一个字节都设置为1 // 00000001 00000001 00000001 00000001 memset(p, 1, size); cout << *p << endl; // 16843009 getchar(); return 0; }