কম্পিউটার

স্ট্যাটিক ভেরিয়েবলগুলি কোথায় C/C++ এ সংরক্ষণ করা হয়?


স্ট্যাটিক ভেরিয়েবল হল এমন ভেরিয়েবল যা প্রোগ্রাম চলাকালীন মেমরিতে থাকে অর্থাৎ তাদের জীবনকাল পুরো প্রোগ্রাম চালানো হয়। এটি স্বয়ংক্রিয় ভেরিয়েবলের থেকে আলাদা কারণ তারা শুধুমাত্র মেমরিতে থাকে যখন তাদের ফাংশন চলমান থাকে এবং ফাংশন শেষ হয়ে গেলে ধ্বংস হয়ে যায়।

স্ট্যাটিক ভেরিয়েবলগুলি মেমরির ডেটা সেগমেন্টে সংরক্ষণ করা হয়। ডেটা সেগমেন্ট হল একটি প্রোগ্রামের ভার্চুয়াল অ্যাড্রেস স্পেসের একটি অংশ।

সমস্ত স্ট্যাটিক ভেরিয়েবল যেগুলির একটি সুস্পষ্ট ইনিশিয়ালাইজেশন নেই বা শূন্য থেকে শুরু করা হয়েছে সেগুলি অপ্রবর্তিত ডেটা সেগমেন্টে (এটি BSS সেগমেন্ট নামেও পরিচিত) সংরক্ষণ করা হয়। এর তুলনায়, স্থির ভেরিয়েবলগুলি যেগুলি আরম্ভ করা হয় সেগুলি প্রাথমিক ডেটা সেগমেন্টে সংরক্ষণ করা হয়৷

এর একটি উদাহরণ নিম্নরূপ দেওয়া হল -

static int x = 5;
static int y;

The static variable x is stored in the initialized data segment and the static variable y is stored in the BSS segment.

একটি প্রোগ্রাম যা C-তে স্ট্যাটিক ভেরিয়েবল প্রদর্শন করে তা নিম্নরূপ দেওয়া হল −

উদাহরণ

#include<stdio.h>
int func(){
   static int i = 4 ;
   i++;
   return i;
}

int main(){
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());

   return 0;
}

উপরের প্রোগ্রামটির আউটপুট নিম্নরূপ -

5
6
7
8
9
10

এখন আসুন উপরের প্রোগ্রামটি বুঝতে পারি।

ফাংশনে func(), i হল একটি স্ট্যাটিক ভেরিয়েবল যা 4 তে আরম্ভ করা হয়। তাই এটি ইনিশিয়ালাইজ করা ডেটা সেগমেন্টে সংরক্ষণ করা হয়। তারপর i বৃদ্ধি করা হয় এবং এর মান ফেরত দেওয়া হয়। কোড স্নিপেট যা এটি দেখায় তা হল নিম্নরূপ −

int func(){
   static int i = 4 ;
   i++;
   return i;
}

ফাংশনে main(), ফাংশন func() কে 6 বার বলা হয় এবং এটি প্রিন্ট করা i এর মান প্রদান করে। যেহেতু i একটি স্ট্যাটিক ভেরিয়েবল, প্রোগ্রামটি চলাকালীন এটি মেমরিতে থাকে এবং এটি সামঞ্জস্যপূর্ণ মান প্রদান করে। কোড স্নিপেট যা এটি দেখায় তা হল নিম্নরূপ −

printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());

  1. ম্যাক ক্রোমে কুকিগুলি কোথায় সংরক্ষণ করা হয়?

  2. Mac-এ iBooks কোথায় সংরক্ষণ করা হয়?

  3. মাইক্রোসফ্ট টিম রেকর্ডিংগুলি কোথায় সংরক্ষণ করা হয়?

  4. Apple ফটোগুলি কোথায় সংরক্ষণ করা হয়?