How do malloc() and free() work?

OK some answers about malloc were already posted. The more interesting part is how free works (and in this direction, malloc too can be understood better). In many malloc/free implementations, free does normally not return the memory to the operating system (or at least only in rare cases). The reason is that you will get gaps in … Read more

Multiple OR or AND conditions in IF statement

According to the C++ Standard 1 The && operator groups left-to-right. The operands are both contextually converted to bool (Clause 4). The result is true if both operands are true and false otherwise. Unlike &, && guarantees left-to-right evaluation: the second operand is not evaluated if the first operand is false. and 1 The || operator groups left-to-right. … Read more

c++ parse int from string [duplicate]

In C++11, use std::stoi as: std::string s = “10”; int i = std::stoi(s); Note that std::stoi will throw exception of type std::invalid_argument if the conversion cannot be performed, or std::out_of_range if the conversion results in overflow(i.e when the string value is too big for int type). You can use std::stol or std:stoll though in case int seems too small for the input string. In C++03/98, any of the following can be … Read more

What are the distinctions between the various symbols (*,&, etc) combined with parameters?

To understand this you’ll first need to understand pointers and references. I’ll simply explain the type declaration syntax you’re asking about assuming you already know what pointers and references are. In C, it is said that ‘declaration follows use.’ That means the syntax for declaring a variable mimics using the variable: generally in a declaration … Read more

How to sum up elements of a C++ vector?

Actually there are quite a few methods. C++03 Classic for loop: for(std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it) sum_of_elems += *it; Using a standard algorithm: #include <numeric> sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0); Important Note: The last argument’s type is used not just for the initial value, but for the type of the result as well. If you … Read more