ورود

View Full Version : سوال: طریقه حذف آدرس یک تابع و برگرداندن حافظه به سیستم عامل



sourcecode
دوشنبه 17 فروردین 1394, 12:36 عصر
چطوری اشاره گری که آدرس یک تابع را گرفته و بعد از انجام یکسری کارها , دوباره اشاره گر را حذف کنم.
با دستور delete [] ارور میداد . میگه که بعضی از اشاره گرها به تابع رو نمیتوانیم حذف کنیم.

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
void get(int(*p)(const char *, const char *), char *str1, char *str2)
{
if (p(str1 , str2))
cout << "str1" << endl;
else
cout << "str2" << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
char str1[20], str2[20];
cout << "Enetr Str1 : ";
cin >> str1;
cout << "Enter Str2 : ";
cin >> str2;
int(*p)(const char *, const char *);
p = strcmp;
get(p, str1, str2);
//delete[] p; ERROR
cout << endl;
system("pause");
return 0;
}

golbafan
دوشنبه 17 فروردین 1394, 13:06 عصر
باید اون اشاره گر رو برابر با null یا 0 کنید
اشاره گرها مکانی از حافظه اند و شیی نیستند که بشه دیلیت کرد

همچنین باید از getmem و setmem استفاده بشه

sourcecode
سه شنبه 18 فروردین 1394, 15:28 عصر
باید اون اشاره گر رو برابر با null یا 0 کنید
اشاره گرها مکانی از حافظه اند و شیی نیستند که بشه دیلیت کرد


با سلام
دوست عزیز من در تابع main یک اشاره گر p تعریف کرده ام که آدرس پارامترهای تابع strcat رو گرفته ( این اشاره گر به عنوان ورودی تابع در اختیار تابع get قرار میگیرد ) , , , در پایان اشاره گر رو با دستور delete حذف کرده ام . یعنی من یک اشاره گر حذف کرده ام نه یک شی .


همچنین باید از getmem و setmem استفاده بشه
getmem و setmem چی هستند ؟؟؟
اگه زحمتی نیست یک مثال بزنید.