यदि मैं ढेर और ढेर पर एक चर (सूचक) के पते की लंबाई के बीच कोई सहसंबंध है तो मैं उत्सुक हूं। कई अवसरों पर मैंने देखा है कि ढेर की तुलना में स्टैक चर के संबंध में आमतौर पर अधिक समय होते हैं। उदाहरण के लिए निम्नलिखित साधारण परीक्षण पर विचार करें:ढेर और ढेर पर स्मृति स्थान पैटर्न
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 0;
int *j = malloc(sizeof(int)); *j = 0;
printf("&i = %p\n j = %p\n", &i, j);
free(j);
return 0;
}
उत्पादन:
&i = 0x7fffe9c7fa5c
j = 0x100e010
इन परिणामों gcc
का उपयोग कर linux में प्राप्त कर रहे हैं; क्या यह ओएस/कंपाइलर निर्भर हो सकता है?
100% निश्चित नहीं है, लेकिन मुझे लगता है कि यह उस क्रम में विशिष्ट CPU/OS/कंपाइलर है। इसके अलावा, आप शायद एक भौतिक पता भी नहीं देख रहे हैं। इसके अलावा, ढेर बढ़ता है और ढेर बढ़ता है, इसलिए एक स्टैक वैरिएबल का पता कम हो जाता है। – Corbin