for example my array is test[10],
and i want to clear 2 of the 10 memory, how to do that??

Dani AI

Generated

Quick practical summary for plus concrete options (expands on and without repeating their examples).

Three different meanings of "clear 2 of 10" and how to do each in modern C++:

  • Mark two slots as "empty" (keep size, just invalidate entries). Good when indices matter or when deleting is expensive.
  • Overwrite two elements with a default/sentinel value. Simple for POD types.
  • Remove two elements (shrink the container). Good when logical length must change.

Example — mark slots as empty using std::optional (no raw memory juggling):

#include <vector>
#include <optional>

std::vector<std::optional<int>> v(10);
// populate...
int to_clear = 2;
for (auto &cell : v) {
  if (cell && *cell == targetValue) {
    cell.reset();           // clears this slot
    if (--to_clear == 0) break;
  }
}

Example — remove exactly two occurrences (preserves element order, note O(n) shifts):

#include <vector>
#include <algorithm>

std::vector<int> v = /*...*/;
int removes = 2;
while (removes-- > 0) {
  auto it = std::find(v.begin(), v.end(), targetValue);
  if (it == v.end()) break;
  v.erase(it); // destructor called for object types; indices shift
}

Notes and troubleshooting:

  • Erasing from a vector invalidates iterators and shifts elements; update any stored indices/pointers.
  • For non-POD objects never use memset — let destructors run or use RAII.
  • To remove several items cheaply without preserving order, swap the match with v.back() and pop_back().
  • Prefer std::vector/std::optional and standard algorithms over raw new/delete for safer, clearer code.

This expands 's loop idea into safe, idiomatic patterns and follows the allocation advice from while giving concrete choices depending on whether the goal is "invalidate", "overwrite", or "remove".

Recommended Answers

All 4 Replies

You can't manually clear the memory of static arrays. The memory of that array won't be cleared until you leave the scope where it was declared (scope is, in this case, the space within the curly braces)

example:

void exampleFunc()
{
  int aaa[32];
} //when the function closes, the memory where the aaa array resides will be cleared.

int main()
{
  int bbb[10]; //reserves 10 
  for(int iii=0;iii<3;iii++)
  {
    exampleFunc();   
  }
  
} //when the main loop closes, the bbb memory will be cleared.

Each time there's a call for exampleFunc, the application will allocate memory for the array and, each time it ends, that memory will be cleared.

If you wanted to be able to clear and assign memory you should look into new/delete (c++ proper) or malloc/free (c).

http://www.cplusplus.com/doc/tutorial/dynamic/

yes, i am working on dynamic array,
but i have no idea to find the specific data to clear,
should i use a loop??

Use a loop check to see if a given value in the array matches the data you are looking for (or meets a certain criterion). Then set that value to zero or something appropriate to that particular array (so if it's a string array, set it to space or something.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.