اذهب إلى المحتوى

السؤال

نشر (معدل)

كيف ممكن احل مشكله Shallow Copy problem باستخدام strcpy 

void addFront(T *item) {
  Node<T>* p = new Node<T>;
  p->next = NULL;
  p->data = item;
  if (head == NULL) {
    head= p;
    n++;
  }
  else {
    p->next = head;
    head = p;
    n++;

  }
}

 

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال

Recommended Posts

  • 0
نشر
بتاريخ On 4‏/3‏/2021 at 19:42 قال Mari Carmen:

كيف ممكن احل مشكله Shallow Copy problem باستخدام strcpy 

void addFront(T *item) {
  Node<T>* p = new Node<T>;
  p->next = NULL;
  p->data = item;
  if (head == NULL) {
    head= p;
    n++;
  }
  else {
    p->next = head;
    head = p;
    n++;

  }
}

 


لحل مشكلة Shallow Copy problem باستخدام strcpy في الشيفرة التي قدمتها، يمكنك القيام بالتالي:

1- حجز مساحة في الذاكرة لتخزين البيانات بدلاً من استخدام نفس المؤشر.

2- انسخ البيانات باستخدام strcpy.

3-قم بتفريغ المساحة المخصصة بمجرد الانتهاء من استخدام البيانات.

هنا هو الكود المعدل:

void addFront(T *item) {
  Node<T>* p = new Node<T>;
  p->next = NULL;
  p->data = new T[strlen(item) + 1]; // حجز مساحة في الذاكرة
  strcpy(p->data, item); // نسخ البيانات باستخدام strcpy
  if (head == NULL) {
    head = p;
    n++;
  }
  else {
    p->next = head;
    head = p;
    n++;
  }
}
بهذا التعديل، يتم حل مشكلة Shallow Copy problem عن طريق حجز مساحة في الذاكرة ونسخ البيانات إليها باستخدام strcpy.وعندما لا تحتاج إلى هذه البيانات بعد، يجب عليك تحرير المساحة المخصصة باستخدام delete  لتجنب تسرب الذاكرة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...