fork download
  1. #include <stdio.h>
  2.  
  3. static int *pi=NULL;
  4.  
  5. void func( int array ){
  6. if( pi==NULL ){
  7. pi=new int[array];
  8. printf("new int[%d]しました。アドレスは%p\n", array, pi );
  9. }else {
  10. printf("すでに確保されてるのでnew int[%d]しません!!!\n", array);
  11. }
  12. }
  13.  
  14. void release(void){
  15. if( pi!=NULL ){
  16. delete[] pi;
  17. printf("delete[] intしました。アドレスは%p\n", pi);
  18. pi=NULL;
  19. }else{
  20. printf("すでに解放済みなのでdeleteしません!!!\n");
  21. }
  22. }
  23. int main(void) {
  24.  
  25. func(3);
  26. func(5);
  27. func(7);
  28. release();
  29. release();
  30. func(10);
  31. release();
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0.01s 5408KB
stdin
Standard input is empty
stdout
new int[3]しました。アドレスは0x55ff29ee4e70
すでに確保されてるのでnew int[5]しません!!!
すでに確保されてるのでnew int[7]しません!!!
delete[] intしました。アドレスは0x55ff29ee4e70
すでに解放済みなのでdeleteしません!!!
new int[10]しました。アドレスは0x55ff29ee5ea0
delete[] intしました。アドレスは0x55ff29ee5ea0