PDA

View Full Version : AnsiString یا char*



max2004
یک شنبه 12 اسفند 1386, 09:38 صبح
سلام
تو یک پروژه که تا حد زیادی با حافظه (رشته و آرایه) سروکار داره موندم که استفاده از کدوم گزینه بهتره؟
از یه طرف اگه از char* استفاده کنم احساس میکنم چون مستقیما با اشاره گرها کار میکنم ممکنه سرعت بالاتر بره
از اون طرف چون AnsiString دیگه حالت اشاره گر نداره مدیریت حافظش با خود c++ هست و شاید بهتر عمل کنه(از این لحاظ که دیگه اختصاص و حذف حافظه با من نیست)
آیا موارد کاربرد این دو نوع داده تفاوت اساسی با هم داره؟

Nima_NF
یک شنبه 12 اسفند 1386, 16:55 عصر
خوب این بستگی به میزان نیاز ما به کار با رشته ها دارد ،
در بسیاری از موارد که نیازی نیست کارهای زیادی بر روی رشته ها انجام دهیم و یا از قابلیت های string در ++C استفاده کنیم ، به راحتی از آرایه ها استفاده می کنیم و همین طور در مواقعی که قصد داریم کدها قابلیت حمل بیشتری داشته باشند (مثلا برای پشتیبانی از زبان C در کنار ++C اگر امکانش باشد).
در مواردی هم که کار با رشته ها نیاز به تغییرات بسیاری دارد ، آنگاه از string استفاده می کنیم تا زمان توسعه کاهش یابد .

vcldeveloper
یک شنبه 12 اسفند 1386, 20:39 عصر
از اون طرف چون AnsiString دیگه حالت اشاره گر نداره
AnsiString هم یک اشاره گر هست. نوع string در C++ Builder از نوع string دلفی گرفته شد که در واقع اشاره گری به یک آرایه دینامیک در Heap هست که چند بایت سربار برای نگه داری تعداد Reference ها و سایز رشته داره. می تونید به هر کارکتر بصورت عضوی از یک آرایه دسترسی داشته باشید، محدودیتی از نظر حجم نداره، با رشته های null-terminated در C سازگار هست، با رسیدن تعداد Reference ها به صفر، بصورت خودکار آزاد میشه.