الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

malloc

مغلق
بدأه st0rm-man في 30 مارس 2007 · 4 رد · 824 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لم افهم قليلا تلك الداله

لماذا هذا المنظر

char *ptr;
*ptr=malloc(100 *sizeof(char));

لماذا

 *sizeof(char)

هل هذه مثلا كال array لتحديد عناصر المصفوفه واين يقع العنصر التالي

اقصد بذلك لما نقوم بعمل sizeof هل ذلك لتحديد العنصر او الحرف التالي اين يقع في الذاكره ؟

ارجو ان كان عند احدكم نصيحه لتعلم هذه الاشياء dynamic memory allocating و ال pointers بشكل جيد ارجو ان يضعها هنا

ليس ذلك اني لم ابحث بل بحثت ولكن لست اعرف اين هو الافضل

شكرا مقدما واتاسف لازعاجكم باالاساله

#2
1:  /* Demonstrates the use of malloc() to allocate storage */
2:  /* space for string data. */
3:
4:  #include <stdio.h>
5:  #include <stdlib.h>
6:
7:  char count, *ptr, *p;
8:
9:  main()
10: {
11:	/* Allocate a block of 35 bytes. Test for success. */
12:	/* The exit() library function terminates the program. */
13:
14:	ptr = malloc(35 * sizeof(char));
15:
16:	if (ptr == NULL)
17:	{
18:		puts("Memory allocation error.");
19:		exit(1);
20:	}
21:
22:	/* Fill the string with values 65 through 90, */
23:	/* which are the ASCII codes for A-Z. */
24:
25:	/* p is a pointer used to step through the string. */
26:	/* You want ptr to remain pointed at the start */
27:	/* of the string. */
28:
29:	p = ptr;
30:
31:	for (count = 65; count < 91; count++)
32:		*p++ = count;
33:
34:	/* Add the terminating null character. */
35:
36:	*p = `';
37:
38:	/* Display the string on the screen. */
39:
40:	puts(ptr);
41:
42:	return 0;
43: }

لم استطع فهمه ايضا

جعل قيمة المؤشؤر p = ptr; تساوي قيمة المؤشر ptr اقصد بذلك عنوان الذاكره

ثم ادخل القيم من 65 ال 91 في العنواين المسجله في p وهذه فهمتها

لكن

*p='';

كيف

كيف ذلك لماذا لم تقم بحذف كل مافي ال مؤشر بما اني كنت مسبقا مسند اليه ptr كعنوان

ولماذا ايضا اطبع ptr ماعلاقته وعلاقة ادخال p في ال for loop ؟

تم تعديل هذه المشاركة بواسطة st0rm-man في 30 مارس 2007 في 20:49

#3

up up up up

where are you guys?

#4

malloc هذه تقوم بحجز بايتات في الـHeap

عدد هذه البايتات ( حجم المتغير ) = قيمة معامل الدالة

ركز معي :

الآن المتغير char حجمه 1 بايت

وتريد ان تحجز متغير من الذاكرة حجمه 100 char

يعني 100*1 = 100

ماقام به كاتب هذا الكود يشابه طريقة new ونسميها Dynamic Array كما تعلم

والتي تشابه الـ Array العادي

*p يقصد بها حرف واحد فقط والذي يمثل العنصر رقم count في المصفوفة

راجع المواضيع المثبتة في القسم ستجد مقالات رائعة جدا عن المؤشرات

#5

شكرا ياجميييييييييييييل

الحمد لله هزمتها هزيمه نكراااااااااااااء :D

اشكرك جدا

هذا الموضوع مغلق.

مواضيع مشابهة