//栈区—局部变量,函数的形式参数 //堆区—动态内存分配 --malloc,free,calloc,realloc。 //静态区-全局变量,静态变量,static #include#include #include #include //int mian() //{ // // int* p = (int*)malloc(10 * sizeof(int));//如果参数size为0,malloc的行为是未定义的,取决于编译器; // if (p == NULL) // { // printf("%sn", strerror(errno)); // } // else // { // int i = 0; // for (i = 0; i < 10; i++) // { // *(p + i) = i; // } // for (i = 0; i < 10; i++) // { // printf("%d", *(p + i)); // } // } // free(p);//如果p指向的空间不是动态开辟的,则free函数的行为是未定义的。 // p = NULL; // return 0; //} // // //int main() //{ // //动态开辟一个空间,并初始化空间的每个字节为0; // int* p =(int*)calloc(10,sizeof(int));//前面是元素个数,后面是元素大小; // return 0; //} //realloc--调整动态开辟内存空间的大小; //使用的注意事项 //1.如果p指向的空间之后有足够的空间可以追加,则直接追加,并返回p; //2.如果p指向的空间之后没有足够的空间可以追加,则重新开辟一块空间,并将原来内存中的数据 //拷贝过来,释放旧的内存空间,最后返回新开辟的内存空间地址 //3.要用一个新的变量来接受realloc函数的返回值; //int main() //{ // int* p = (int*)malloc(20); // if (p == NULL) // { // printf("%sn", strerror(errno)); // } // else // { // int i = 0; // for (i = 0; i < 5; i++) // { // *(p + i) = i; // } // } // int* p2=(int*)realloc(p, 40); // if (p2 != NULL) // { // p = p2; // int i = 0; // for (i = 5; i < 10; i++) // { // *(p + i) = i; // } // for (i = 0; i < 10; i++) // { // printf("%d ", *(p + i)); // } // } // free(p); // p = NULL; // return 0; //} //柔型数组 //struct S //{ // int n; // int arr[]; //}s; // //int main() //{ // struct S* p = (struct S*)malloc(sizeof(s) + sizeof(int) * 5); // int i = 0; // for (i = 0; i < 5; i++) // { // p->arr[i] = i; // } // for (i = 0; i < 5; i++) // { // printf("%d ", p->arr[i]); // } // free(p); // return 0; //}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)