Bunu yapmak için resmi olarak desteklenen bir yol yokken. Bir işaretçinin yığından olup olmadığını (örneğin arayanın yığını) algılamak için (modern sistemlerde) bir yol var mı?Bellek yığında olup olmadığını nasıl algılar? (yığın veya statik değişken değil)
gerçek kod mantığının bir parçası olarak çalışmaya gitmiyor bu, onu algılayabilir yapılandırmaları için, örneğin hataları önlemeye yardımcı olabilir bile: yığını ve bellek düzeni içinde olmadığından
void my_function(void *arg) {
/* Only some configurations can do this (depending on compiler & arch). */
#if THE_MOONS_ALIGN
assert(not_stack_memory(arg));
#endif
/* ... actual logic ... */
}
, başlangıçtaki yığın işaretçisi biliyor ve yığın boyutunu biliyorsanız şimdiki değişken aralığında ise, o zaman kolayca hesaplayabilir. Basit örnek, int main (void) {int firstVar; char * ptrToFirstVar = (char *) & firstVar;/* Artık stack */char * endOfStack = ptrToFirstVar - yourSTACKSIZE; 'un kısa bir başlangıcına sahipsiniz. Sonra değişkeninizin yığın ve yığın boyutu arasında olup olmadığını kontrol edin. – tilz0R
@ tilz0R veya çoğu platform bu bilgiyi sorgulamak için API'ler sağlar. –
@AjayBrahmakshatriya, * yorumunuzun çoğuna * odaklanır. – tilz0R