aboutsummaryrefslogtreecommitdiff
path: root/src/testallocation.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/testallocation.cc')
-rw-r--r--src/testallocation.cc82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/testallocation.cc b/src/testallocation.cc
new file mode 100644
index 0000000..75bc48c
--- /dev/null
+++ b/src/testallocation.cc
@@ -0,0 +1,82 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "FlexArrayTmpl.H"
+
+struct InnerContainer {
+ int num;
+
+ InnerContainer(InnerContainer &src){
+ this->num=src.num;
+ }
+ InnerContainer &operator=(InnerContainer &src){
+ if(this==&src) return src;
+ this->num=src.num;
+ return *this;
+ }
+ InnerContainer(){
+ printf("\tNew InnerContainer %lu\n",(unsigned long)this);
+ num=-1; /* uninitialized */
+ }
+ ~InnerContainer(){
+ printf("\tInnerContainer[%lu] destruct %d\n",(unsigned long)this,num);
+ }
+};
+
+struct OuterContainer {
+ int num;
+ FlexArray<InnerContainer> inner;
+ OuterContainer(OuterContainer &src){
+ this->num=src.num;
+ this->inner=src.inner;
+ }
+ OuterContainer &operator=(OuterContainer &src){
+ if(this==&src) return src;
+ this->num=src.num;
+ this->inner=src.inner;
+ return *this;
+ }
+ OuterContainer(){
+ printf("New OuterContainer %lu\n",(unsigned long)this);
+ num=-1;
+ }
+ ~OuterContainer(){
+ printf("OuterContainer[%lu] destruct %d innersize=%u\n",
+ (unsigned long)this,num,inner.getSize());
+ }
+};
+
+struct Container {
+ FlexArray<OuterContainer> outer;
+
+ Container(int sz){
+ int i,j;
+ outer.setSize(sz);
+ for(i=0;i<sz;i++){
+ OuterContainer o;
+ printf("***Outer create [%u]\n",i);
+ o.num=i;
+ o.inner.setSize(sz);
+ for(j=0;j<sz;j++){
+ printf("\t***Inner create [%u]\n",j);
+ (o.inner[j]).num=j;
+ }
+ outer[i]=o;
+ }
+ }
+
+ ~Container(){
+ printf("Container Destructor outersize=%u\n",outer.getSize());
+ }
+};
+
+void main(int argc,char *argv[]){
+ Container *c;
+ puts("new container");
+ c = new Container(3);
+ puts("CREATED--------(now destroy)");
+ delete c;
+ puts("DONE");
+}
+