We could not print Anchors.
---
We changed our methods which is global function, today.
dummy_vPoint_index++ before return, so, which ensured next value is dummy_vPoint[dummy_vPoint_index];
And we could see if dummy_vPoint[dummy_vPoint_index] is nullptr before return.
This is O.K.
Memorization error is another reason.
242 :// Recreated: 20200218 243 :// Recreated: 20200414 244 :// 245 :// 246 :// 247 :vPoint* memorizevPoint( float a, float b, float c ) { 248 : printf("memorizevPoint starts: %f %f %f dummy_vPoint_index %d dummy_vPoint_max %d\r\n", a, b, c, dummy_vPoint_index, dummy_vPoint_max); 249 : 250 : // Mallocation: initialize: 20200414 251 : if ( dummy_vPoint_max == 0 ) { 252 : dummy_vPoint_max = 8; 253 : dummy_vPoint_index = 8; 254 : dummy_vPoint = (vPoint**) malloc ( sizeof(vPoint*) * dummy_vPoint_max ); 255 : } 256 : 257 : if ( dummy_vPoint_index < dummy_vPoint_max ) { 258 : if ( dummy_vPoint[dummy_vPoint_index] != nullptr ) { 259 : if ( dummy_vPoint_index >= dummy_vPoint_max - 1 ) { 260 : dummy_vPoint_max = dummy_vPoint_max * 2; 261 : dummy_vPoint = (vPoint**) realloc ( dummy_vPoint, sizeof(vPoint*) * dummy_vPoint_max ); 262 : } 263 : dummy_vPoint_index++; 264 : printf("aReuse: %d/%d dummy_vPoint=%p\r\n", dummy_vPoint_index -1, dummy_vPoint_max, dummy_vPoint[dummy_vPoint_index - 1]); 265 : //exit(-1); 266 : return dummy_vPoint[dummy_vPoint_index - 1]; 267 : } else { 268 : // nullptr 269 : dummy_vPoint[dummy_vPoint_index] = new vPoint( a, b, c ); 270 : dummy_vPoint_index++; 271 : printf("aNew: %d/%d dummy_vPoint=%p\r\n", dummy_vPoint_index -1, dummy_vPoint_max, dummy_vPoint[dummy_vPoint_index - 1]); 272 : return dummy_vPoint[dummy_vPoint_index - 1]; 273 : } 274 : } 275 : 276 : 277 : // Rallocation: 278 : if ( dummy_vPoint_index >= dummy_vPoint_max - 1 ) { 279 : dummy_vPoint_max = dummy_vPoint_max * 2; 280 : dummy_vPoint = (vPoint**) realloc ( dummy_vPoint, sizeof(vPoint*) * dummy_vPoint_max ); 281 : } 282 : 283 : if ( dummy_vPoint[dummy_vPoint_index] == nullptr ) { 284 : dummy_vPoint[dummy_vPoint_index] = new vPoint ( a, b, c ); 285 : } 286 : 287 : dummy_vPoint_index++; 288 : printf("memorizevPoint returns: %p: dummy_vPoint_index %d dummy_vPoint_max %d\r\n", dummy_vPoint[dummy_vPoint_index - 1], dummy_vPoint_index - 1, dummy_vPoint_max ); 289 : return dummy_vPoint[dummy_vPoint_index - 1]; 290 :}