Я хотел проверить свои знания и написал небольшую программу, которая выглядит следующим образом:
#include <iostream>
#include <cstdlib>
int main()
{
int* mem1 = (int*) malloc(2 * sizeof(int));
int* mem2 = (int*) malloc(5 * sizeof(int));
std::cout << "mem1: " << sizeof(mem1) << std::endl;
std::cout << "mem2: " << sizeof(mem2) << std::endl;
return 0;
}
Я получаю вывод:
mem1: 8
mem2: 8
Когда я изменяю значения, что malloc(2 * sizeof(int))
до malloc(3 * sizeof(int))
, вывод также не меняется.
Этот - это Учебное пособие, которое я использовал, поэтому я не совсем уверен, безопасно ли это для памяти, с преобразование в int*
при звонке malloc
. Я также нашел этот вопрос, но я не считаю его очень полезным в моем случае. Clang ++ - это компилятор, который я использовал, но я не думаю, что это имеет какое-либо значение.
Мое лучшее предположение, что он выделяет ту же память, потому что он не знает, где заканчивается память.