Objective-C 判断void*是否指向堆栈
时间: 2023-07-08 12:53:20 浏览: 103
Object-C语言教程:Objective-C 简介
Objective-C中可以使用以下方法来判断void*指向的内存是否在堆上:
1. 使用malloc函数分配的内存都是在堆上的,可以使用以下方法来判断:
```
void *ptr = malloc(size);
if (&ptr > NSZoneMalloc) {
// 在堆上
} else {
// 在栈上
}
```
2. 使用alloca函数分配的内存都是在栈上的,可以使用以下方法来判断:
```
void *ptr = alloca(size);
if (&ptr > NSZoneMalloc) {
// 在堆上
} else {
// 在栈上
}
```
需要注意的是,alloca函数分配的内存是在当前函数的栈帧上,一旦函数返回,这些内存就会被自动释放,因此需要谨慎使用。另外,这种方法只适用于判断当前函数内的内存分配情况,无法判断其他函数内的内存分配情况。
阅读全文