Movatterモバイル変換


[0]ホーム

URL:


Menu
×
See More 
Sign In
+1 Get Certified Upgrade Teachers Spaces Get Certified Upgrade Teachers Spaces
   ❮     
     ❯   

C++ Tutorial

C++ HOMEC++ IntroC++ Get StartedC++ SyntaxC++ OutputC++ CommentsC++ VariablesC++ User InputC++ Data TypesC++ OperatorsC++ StringsC++ MathC++ BooleansC++ If...ElseC++ SwitchC++ While LoopC++ For LoopC++ Break/ContinueC++ ArraysC++ StructuresC++ EnumsC++ ReferencesC++ PointersC++ MemoryManagement

C++ Functions

C++ FunctionsC++ Function ParametersC++ Function OverloadingC++ ScopeC++ RecursionC++ Lambda

C++ Classes

C++ OOPC++ Classes/ObjectsC++ Class MethodsC++ ConstructorsC++ Access SpecifiersC++ EncapsulationC++ Friend FunctionsC++ InheritanceC++ PolymorphismC++ TemplatesC++ FilesC++ Date

C++ Errors

C++ ErrorsC++ DebuggingC++ ExceptionsC++ Input Validation

C++ DataStructures

C++ Data Structures & STLC++ VectorsC++ ListC++ StacksC++ QueuesC++ DequeC++ SetsC++ MapsC++ IteratorsC++ Algorithms

C++ Namespaces

C++ Namespaces

C++ Projects

C++ Projects

C++ How To

C++ Add Two NumbersC++ Random Numbers

C++ Reference

C++ ReferenceC++ KeywordsC++ <iostream>C++ <fstream>C++ <cmath>C++ <string>C++ <cstring>C++ <ctime>C++ <vector>C++ <algorithm>

C++ Examples

C++ ExamplesC++ Real-Life ExamplesC++ CompilerC++ ExercisesC++ QuizC++ SyllabusC++ Study PlanC++ Certificate


C++new and delete


The new Keyword

Thenew keyword lets you manage memory yourself.

In the example below, we create memory space for an integer usingnew, store the value35 in it, and print it using apointer:

Example

int* ptr = new int;
*ptr = 35;
cout << *ptr;
Try it Yourself »

Explanation:

  • new int creates memory space for one integer
  • ptr stores the address of that space
  • *ptr = 35; stores the number 35
  • cout << *ptr; prints the value

So we usednew to create memory, andptr to access it.


The delete Keyword

When you create something withnew, it's your job to remove it when you're done.

To do that, usedelete:

Example

delete ptr;
Try it Yourself »

This tells C++: "I'm done with this memory, you can clean it up now."

What Happens If You Forgetdelete?

If you forget to delete memory, your program will still run, but it may use more and more memory over time.

This is called amemory leak, and it can slow down or crash your program over time.


Using new and delete with Arrays

You can also use thenew keyword to create dynamic arrays.

Note: For arrays, usenew[] anddelete[].For single variables, usenew anddelete.

Dynamic arrays are useful when you don't know the size of the array in advance - like when the size depends on user input or other values that are not known at the start of the program.

For example, imagine you run a hotel. Since you don't know how many guests will arrive, you ask the user for the number and create that many rooms - one to store each guest's name:

Example

#include <iostream>
#include <string>
using namespace std;

int main() {
  int numGuests;
  cout << "How many guests? ";
  cin >> numGuests;

  // Check for invalid input
  if (numGuests <= 0) {
    cout << "Number of guests must be at least 1.\n";
    return 0;
  }

  // Create memory space forx guests (an array of strings)
  string* guests = new string[numGuests];

  // Ignore the leftover newline character after reading numGuests
  cin.ignore();

  // Enter guest names
  for (int i = 0; i < numGuests; i++) {
    cout << "Enter name for guest " << (i + 1) << ": ";
    getline(cin, guests[i]); // Read the full name (including spaces)
  }

  // Show all guests
  cout << "\nGuests checked in:\n";
  for (int i = 0; i < numGuests; i++) {
    cout << guests[i] << "\n";
  }

  delete[] guests; // Clean up memory
  return 0;
}

Example Result:

How many guests? 3
Enter name for guest 1: John Doe
Enter name for guest 2: Liam Spurs
Enter name for guest 3: Jenny Kasp
Guests checked in:
John Doe
Liam Spurs
Jenny Kasp
Run Example »

When to Usenew

In most cases, you don't need to usenew. C++ will automatically handle memory for normal variables like:

int age = 35;
string name = "John";

Butsometimes, you have to manage memory yourself - especially when:

  • You don't know how much memory you'll need in advance (like how many guests or scores)
  • You want to create memory while the program is running, based on user input
  • You need to store large or flexible amounts of data
  • You want full manual control over memory (e.g., performance-critical code)

In those cases,new helps you create memory, anddelete helps you clean it up when you're done.

Tip: If you usenew, always remember to usedelete (ordelete[] for arrays) to avoid memory leaks.





×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning.
Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness
of all content. While using W3Schools, you agree to have read and accepted ourterms of use,cookies andprivacy policy.

Copyright 1999-2025 by Refsnes Data. All Rights Reserved.W3Schools is Powered by W3.CSS.


[8]ページ先頭

©2009-2025 Movatter.jp