{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,1,12]],"date-time":"2025-01-12T00:10:20Z","timestamp":1736640620235,"version":"3.32.0"},"reference-count":19,"publisher":"Wiley","issue":"12","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4716,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,12]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>C++ objects of types that have virtual functions or virtual base classes contain volatile (\u2018memory\u2019) pointers. We call such pointers \u2018hidden pointers\u2019 because they were not specified by the user. If such C++ objects are made persistent, then these pointers become invalid across program invocations. We encountered this problem in our implementation of O++, which is a database language based on C++. O++ extends C++ with the ability to create and access persistent objects.<\/jats:p><jats:p>In this paper, we describe the hidden pointers problem in detail and present several solutions to it. Our solutions are elegant in that they do not require modifying the C++ compiler or the semantics of C++. We also discuss another problem that arises because C++ allows base class pointers to point to derived class objects. C++ has emerged as the de facto standard language for software development, and database systems based on C++ have attracted much attention. We hope that the details and techniques presented will be useful to database researchers and to implementors of object\u2010oriented database systems based on C++.<\/jats:p>","DOI":"10.1002\/spe.4380231202","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T20:20:06Z","timestamp":1163794806000},"page":"1285-1303","source":"Crossref","is-referenced-by-count":6,"title":["Making C++ objects persistent: The hidden pointers"],"prefix":"10.1002","volume":"23","author":[{"given":"A.","family":"Biliris","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"S.","family":"Dar","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"N. H.","family":"Gehani","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","unstructured":"R.AgrawalandN. H.Gehani \u2018Rationale for the design of persistence and query processing facilities in the database programming language O++\u2019 2nd Int. Workshop on Database Programming Languages Portland. OR June1989."},{"key":"e_1_2_1_3_2","doi-asserted-by":"crossref","unstructured":"R.AgrawalandN. H.Gehani \u2018Ode (object database and environment): the language and the data model\u2019 Proc. ACM\u2010SIGMOD 1989 Int. Conf. Management of Data Portland Oregon May\u2010June1989 pp.36\u201345.","DOI":"10.1145\/66926.66930"},{"key":"e_1_2_1_4_2","unstructured":"S.Dar R.AgrawalandN. H.Gehani \u2018The O++ database programming language: implementation and experience\u2019 Proc. IEEE 9th Int. Conf. Data Engineering Vienna Austria.1993."},{"volume-title":"The Annotated C++ Reference Manual","year":"1990","author":"Ellis M. A.","key":"e_1_2_1_5_2"},{"volume-title":"The C++ Programming Language","year":"1991","author":"Stroustrup B.","key":"e_1_2_1_6_2"},{"key":"e_1_2_1_7_2","unstructured":"\u2018ONTOS object database (Release 2.0) data sheet\u2019 ONTOS. Inc. Burlington. MA November1989."},{"volume-title":"Product profile","year":"1990","key":"e_1_2_1_8_2"},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/125223.125238"},{"key":"e_1_2_1_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/125223.125244"},{"key":"e_1_2_1_11_2","first-page":"1115","article-title":"Persistence in the E language: issues and implementation","volume":"19","author":"Richardson J. E.","year":"1989","journal-title":"Software\u2014Practice and Experience"},{"key":"e_1_2_1_12_2","doi-asserted-by":"crossref","unstructured":"G.CopelandandD.Maier \u2018Making Smalltalk a database system\u2019 Proceedings of the 1984 ACM SIGMOD Intl. Conf. on Management of Data Boston Massachusetts. June1984 pp.316\u2013325.","DOI":"10.1145\/971697.602300"},{"volume-title":"Object\u2010Oriented Programming in Common Lisp","year":"1989","author":"Keene S. E.","key":"e_1_2_1_13_2"},{"volume-title":"Eiffel: The Language Version 3","year":"1992","author":"Meyer B.","key":"e_1_2_1_14_2"},{"key":"e_1_2_1_15_2","unstructured":"A.BilirisandT.Panagos \u2018The architecture of the EOS object store\u2019 Tech. Rep. 91\u2010014 Computer Science Dept. Boston University 1991."},{"key":"e_1_2_1_16_2","unstructured":"B.Stroustrup \u201816 ways to stack a cat\u2019 Proc. USENIX Winter Conf. 1991."},{"volume-title":"Vbase technical notes","year":"1987","key":"e_1_2_1_17_2"},{"key":"e_1_2_1_18_2","unstructured":"J. E. B.Moss \u2018Working with persistent objects: to swizzle or not to swizzle\u2019 COINS Technical Report May1990."},{"key":"e_1_2_1_19_2","unstructured":"P. R.Wilson \u2018Pointer swizzling at page fault time: efficiently supporting huge address spaces on standard hardware\u2019 Technical Report UIC\u2010EECS\u201090\u20106 University of Illinois at Chicago December1990."},{"key":"e_1_2_1_20_2","doi-asserted-by":"crossref","unstructured":"A.Biliris \u2018An efficient database storage structure for large dynamic objects\u2019 Proc. IEEE 8th Int. Data Engineering Conference 1992 Phoenix Arizona February1992 pp.301\u2013308.","DOI":"10.1109\/ICDE.1992.213180"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380231202","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380231202","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,11]],"date-time":"2025-01-11T23:56:34Z","timestamp":1736639794000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380231202"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,12]]},"references-count":19,"journal-issue":{"issue":"12","published-print":{"date-parts":[[1993,12]]}},"alternative-id":["10.1002\/spe.4380231202"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380231202","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"type":"print","value":"0038-0644"},{"type":"electronic","value":"1097-024X"}],"subject":[],"published":{"date-parts":[[1993,12]]}}}