编写链表时应注意指针的地址变化示注意
如下所示:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p, *a, *b,*c;
p=a;
//a=(int*)malloc(sizeof(int));
printf("%p %p\n",p,a);
return 0;
}
当两个野指针赋值时.指针保存的是相同的地址,但是动态分配后a的指针就不野了,
结论:动态分配的地址不是野地址是个稳定的地址,像分配初始地址一样,根据此结论动态可以将野地址不再 "野"了
测试代码如下所示:
动态分配前:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p, *a, *b,*c;
p=a;
printf("%p %p\n",p,a);
return 0;
}
动态分配后:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p, *a, *b,*c;
p=a;
a=(int*)malloc(sizeof(int));
printf("%p %p\n",p,a);
return 0;
}
//链表创建
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *Next;
}ListNode;
typedef struct Node* List;
List Create_linklist(List h)
{
List head=h,p,s,r;//****注意指针如果没有被赋初值,就去给其他指针赋值, /*
int n;
printf("please input num:\n&#
进阶研究动态分配malloc()将野指针转化为不"野"的指针
最新推荐文章于 2023-12-17 22:31:22 发布
本文探讨了动态内存分配中malloc()函数的工作原理,重点讲解如何防止和检查野指针,确保指针安全使用。通过实例分析,解释了如何正确初始化和管理内存,避免内存泄漏和悬挂指针问题。
摘要由CSDN通过智能技术生成