编写一个c语言程序,寻找进程栈以下、堆以上的一个不合法地址
时间: 2024-01-21 22:16:09 浏览: 149
浅析栈溢出使用栈时,地址超出了栈的合法范围
以下是一个简单的C语言程序,用于寻找进程栈以下、堆以上的不合法地址。该程序使用了`malloc()`函数来分配一些内存,然后通过比较指针地址来确定不合法地址的范围。
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
// 分配一些内存
void *ptr1 = malloc(1024);
void *ptr2 = malloc(1024);
void *ptr3 = malloc(1024);
// 打印指针地址
printf("ptr1 = %p\n", ptr1);
printf("ptr2 = %p\n", ptr2);
printf("ptr3 = %p\n", ptr3);
// 比较指针地址,找到不合法地址的范围
if (ptr1 < ptr2 && ptr2 < ptr3) {
printf("Invalid memory range: [%p, %p]\n", ptr1, ptr3);
} else if (ptr1 < ptr2) {
printf("Invalid memory range: [%p, %p]\n", ptr1, ptr2);
} else {
printf("Invalid memory range: [%p, %p]\n", ptr2, ptr1);
}
// 释放内存
free(ptr1);
free(ptr2);
free(ptr3);
return 0;
}
```
该程序首先使用`malloc()`函数分配了三个大小为1024字节的内存块,并打印了它们的指针地址。然后,通过比较指针地址,找到不合法地址的范围,并打印出来。最后,释放了分配的内存。
阅读全文