**آدرس حافظه** یا **نشانی حافظه** در رایانش، یک  نوع داده‌ای است که در سطوح مختلفی توسط سخت‌افزار و نرم‌افزار برای دسترسی به انباره اصلی حافظه رایانه استفاده می‌شود. آدرس‌های حافظه رشته‌هایی از ارقام با طول ثابت هستند که مطابق قرارداد نشان داده می‌شوند و با اعداد صحیح بی علامت با آن‌ها کار می‌شود. این چنین معناهای شمارش معنایی که خودشان بر اساس ویژگی‌های پردازنده (مانند دستور العمل‌های اشاره‌گر و آدرس ثبات افزایشی) هستند، و همچنین از حافظه مانند آرایه‌ای تأیید شده توسط زبان‌های برنامه‌نویسی مختلف استفاده می‌کنند.

انواع آدرس‌های حافظه
--------------------

انواع مختلفی از آدرس‌های حافظه وجود دارد. به عبارت دیگر یک رایانه و حتی یک برنامه ممکن است فضاهای آدرس حافظه مختلفی داشته باشند.
یک حافظه رایانه دیجیتال ، به‌طور خاص حافظه اصلی، شامل تعدادی **مکان حافظه** می‌باشد، هر یک با داشتن یک آدرس فیزیکی یا یک کد قابل استفاده برای پردازنده (یا دستگاه‌های دیگر) می‌توانند به آن دسترسی پیدا کنند. در کل فقط نرم‌افزارهای سیستمی، یعنی بایوس، سیستم عامل، و برخی از برنامه‌های سودمند عمومی (مانند ارزیاب‌های حافظه)، حافظه فیزیکی را با استفاده از عملوند کد ماشین یا ثبات پردازنده آدرس‌دهی می‌کنند.
دستوردهی پردازنده برای هدایت یک دستگاه سخت افزاری، به نام کنترل گر حافظه، برای استفاده از گذرگاه حافظه یا گذرگاه سیستم یا کنترل جداگانه، آدرس و گذرگاه‌های داده‌ها، برای اجرای دستورهای برنامه به کار می‌رود. هدایت‌گر حافظه گذرگاه شامل تعدادی خطوط موازی است که هر کدام با یک عدد دودویی نشان داده می‌شوند. عرض گذرگاه و به این ترتیب تعدادی از واحدهای ذخیره‌سازی آدرس و تعداد بیت در هر واحد در میان رایانه‌های مختلف متفاوت است.

واحد وضوح آدرس
--------------

بیشتر رایانه‌های امروزی آدرس پذیر بایتی هستند یعنی هر آدرس یک تک بایت ۸ بیتی از انباره را مشخص می‌کند. داده‌های بیش از حد بزرگ که در یک بایت ذخیره می‌شود ممکن است چند بایت را اشغال کنند و در دنباله‌ای از آدرس‌های متوالی را قرار بگیرد. رایانه‌های آدرس پذیر کلمه‌ای وجود دارد که در آن حداقل واحد ذخیره‌سازی آدرس پذیر دقیقاً کلمه پردازنده است. به عنوان مثال در رایانه کوچک اطلاعات عمومی Nova و تگزاس اینسترومنتز TMS9900 و ریزرایانه‌های ملی نیمه هادی IMP-16 استفاده می‌شود از کلمات ۱۶ بیتی استفاده می‌شود. بسیاری از رایانه‌های بزرگ ۳۶ بیتی (مانند PDP-10) که نه از آدرس‌دهی بایتی بلکه از آدرس‌دهی کلمه ۱۸ بیتی استفاده می‌کنند که یک فضای آدرس ۲۱۸ ، ۳۶ بیت کلمه‌ای (حدود یک مگابایت از انباره) می‌دهد. بهره وری از آدرس‌دهی حافظه بستگی به اندازه بیت در گذرگاه استفاده شده برای آدرس‌ها - بیت استفاده شده بیشتر آدرس‌های در دسترس بیشتری را برای رایانه به همراه دارد. برای مثال، یک دستگاه 8 بیتی *آدرس‌پذیر بایتی* با گذرگاه آدرس ۲۰ بیتی (به عنوان مثال اینتل ۸۰۸۶) می‌تواند ۲۲۰ (۱۰۴۸۵۷۶) محل حافظه یا یک مگابایت از حافظه را آدرس دهی کند، در حالی که یک گذرگاه ۳۲ بیتی (به عنوان مثال اینتل ۸۰۳۸۶) می‌تواند ۲۳۲ (۴۲۹۴۹۶۷۲۹۶) مکان یا ۴ گیگابایت فضای آدرس داشته باشد. در مقابل یک ماشین *آدرس پذیر کلمه‌ای* ۳۶بیتی با یک گذرگاه آدرس ۱۸بیتی تنها ۲۱۸ (۲۶۲۱۴۴) مکان ۳۶ بیتی (۹۴۳۷۱۸۴ بیت) برابر با ۱۱۷۹۶۴۸ بایت 8 بیتی یا ۱۱۵۲ کیلوبایت، یا ۱/۱۵۲ مگابایت یعنی کمی بیش از ۸۰۸۶ را آدرس‌دهی می‌کند. 

### اندازه کلمه در مقابل اندازه آدرس

اندازه کلمه یک ویژگی است که به یک معماری رایانه داده می‌شود. این نشان دهنده تعداد ارقامی است که یک پردازشگر مرکزی می‌تواند در یک زمان پردازش کند. پردازشگرهای نوین، از جمله سامانه‌های نهفته، معمولاً کلمه‌ای با اندازه‌های ۸، ۱۶، ۲۴، ۳۲ یا ۶۴ بیت دارند. بیشتر رایانه‌های با مصارف عمومی در حال حاضر از پردازشگرهای ۳۲ بیت یا ۶۴ بیتی استفاده می‌کنند. در طول تاریخ بسیاری از اندازه‌های مختلف از جمله ۸، ۹، ۱۰، ۱۲، ۱۸، ۲۴، ۳۶، ۳۹، ۴۰، ۴۸، و ۶۰ بیت استفاده شده‌است.

محتویات هر محل حافظه
--------------------

هر محل حافظه در یک برنامه ذخیره شده رایانه به نوعی یک عدد دودویی یا عدد دهدهی را نگه می‌دارد.

### فضای آدرس در برنامه‌نویسی

در محیط‌های چندکارگی امروزی، فرایند یک نرم‌افزار کاربردی معمولاً در فضای آدرس خودش تکه‌های حافظه از انواع زیر را دارد:

* **زبان ماشین** ، از جمله:
	+ کد خود برنامه(در گذشته به عنوان بخش کد و بخش متن شناخته می‌شده)
	+ کتابخانه‌های اشتراکی
* داده ها، از جمله:
	+ داده‌های مقداردهی اولیه (بخش داده)
	+ متغیر مقدار دهی نشده (اما اختصاص داده شده)
	+ پشته فراخوانی
	+ مدیریت حافظه
	+ حافظه مشترک و حافظه فایل‌های نگاشت شده

برخی از بخش‌های فضای آدرس ممکن است در به جایی نگاشت نشوند.

شمای آدرس دهی
-------------

مقالهٔ اصلی: حالت\_آدرس‌دهی
یک رایانه می‌تواند به آدرس داده شده **به صراحت** دسترسی داشته باشد (در برنامه‌نویسی سطح پایین که معمولاً **آدرس‌دهی مطلق** یا گاهی **آدرس‌دهی خاص** نامیده می‌شود و به عنوان نوع داده اشاره‌گر در زبان‌های سطح بالا شناخته می‌شود). با این حال یک برنامه می‌تواند از آدرس‌دهی نسبی استفاده کند که یک مکان را در ارتباط با جایی دیگر (پایه آدرس‌دهی) مشخص می‌کند. حالات آدرس‌دهی غیر مستقیم بسیاری وجود دارد .
نگاشت آدرس‌های منطقی به حافظه فیزیکی و مجازی، چند سطح غیر مستقیم را می‌افزاید، پایین را ببینید.

انواع حافظه
-----------

بسیاری از برنامه نویسان ترجیح می‌دهند طوری حافظه را آدرس دهی کنند که هیچ تمایزی بین فضای کد و فضای داده (رجوع کنید به بالا)، و همچنین بین حافظه فیزیکی و مجازی (پایین را ببینید) وجود نداشته باشد. به عبارت دیگر، اشاره‌گرهای عددی یکسان دقیقاً به همان بایت مشابه از حافظه دسترسی تصادفی اشاره می‌کند.

### انواع حافظه در معماری x86

کامپیوترهای x86 اولیه بر اساس ترکیبی از دو عدد از آدرس‌های نوع حافظه قطعه بندی شده‌استفاده می‌کردند: بخش حافظه و حاشیه که در آن قطعه است.

1. ↑  «*نشانی*» [*رایانه و فنّاوری اطلاعات*] هم‌ارزِ «*address*»؛ منبع: گروه واژه‌گزینی. جواد میرشکاری، ویراستار. *دفتر اول*. فرهنگ واژه‌های مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. شابک ۹۶۴-۷۵۳۱-۳۱-۱ (ذیل سرواژهٔ *نشانی*)

منابع
-----

مشارکت‌کنندگان ویکی‌پدیا. «Memory address». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۲۱ دسامبر ۲۰۱۳.

پیوند به بیرون
--------------

| * ن
* ب
* و
انواع داده |
| --- |
| یکاهای اطلاعات | 
* بیت (رایانه)
* بایت
* Trit
* Tryte
* Word
* آرایه بیتی

 |
| عددی | 
* Arbitrary-precision or bignum
* Complex
* Decimal
* Fixed point
* ممیز شناور
	+ Double-precision floating-point format
	+ Extended precision
	+ Long double
	+ Octuple precision
	+ Quadruple precision
	+ فرمت ممیز شناور با دقت یگانه
	+ Reduced precision
		- Minifloat
		- Half precision
		- bfloat16
* متغیرهای رشته‌ای کوتاه
	+ signedness
* Interval
* Rational

 |
| اشاره‌گر | 
* آدرس حافظه
	+ آدرس فیزیکی
	+ virtual
* مرجع (علوم رایانه)

 |
| نوشته ساده | 
* نویسه (رایانه)
* رشته (علوم رایانه)
	+ null-terminated

 |
| Composite | 
* Algebraic data type
	+ generalized
* نوع داده آرایه
* آرایه انجمنی
* کلاس (برنامه‌نویسی)
* Dependent
* Equality
* Inductive
* لیست (نوع داده انتزاعی)
* شیء (علوم رایانه)
	+ metaobject
* Option type
* Product
* رکورد یا ساختار (علم کامپیوتر)
* Refinement
* Set
* Union
	+ tagged

 |
| دیگر | 
* نوع داده بولی
* Bottom type
* ظرف (نوع داده انتزاعی)
* Enumerated type
* مدیریت استثناء
* Function type
* Opaque data type
* Recursive data type
* نشان‌بر
* جریان (رایانش)
* Top type
* Type class
* Unit type
* نوع void

 |
| موضوعاتمرتبط | 
* نوع داده انتزاعی
* ساختمان داده‌ها
* برنامه‌نویسی جنریک
* Kind
	+ metaclass
* چندریختی پارامتری
* Primitive data type
* Protocol
	+ رابط (رایانش)
* چند ریختی زیرنوعی (برنامه نویسی کامپیوتر)
* Type constructor
* Type conversion
* سیستم انواع
* نظریه نوع‌ها

 |
| See also الگو:یکاهای اطلاعات |