<cstdlib>库
<cstdlib>库
内存分配
malloc() 在堆上分配指定字节数的内存空间
#include <cstdlib>
#include <iostream>
int main() {
int* ptr = (int*)malloc(sizeof(int));
if (ptr!= nullptr) {
*ptr = 10;//*号取值
std::cout << *ptr << std::endl;
free(ptr);
}
return 0;
}
malloc()分配了足够存储一个int类型的内存空间
如果分配成功,它返回一个指向该内存块的指针(void*类型,所以需要进行类型转换)
free()函数用于释放由malloc()分配的内存,以避免内存泄漏
calloc()与malloc()类似,
#include <cstdlib>
#include <iostream>
int main() {
int* ptr = (int*)calloc(5, sizeof(int));//注意这里的5->数组
if (ptr!= nullptr) {
for (int i = 0; i < 5; ++i) {
std::cout << ptr[i] << " ";
}
//输出->0 0 0 0 0
std::cout << std::endl;
free(ptr);
}
return 0;
}
realloc() 调整已被分配的内存块大小
#include <cstdlib>
#include <iostream>
int main() {
int* ptr = (int*)malloc(3 * sizeof(int));
if (ptr!= nullptr) {
for (int i = 0; i < 3; ++i) {
ptr[i] = i;
}
//-> 0 1 2
ptr = (int*)realloc(ptr, 5 * sizeof(int));
if (ptr!= nullptr) {
for (int i = 3; i < 5; ++i) {
ptr[i] = i;
}
for (int i = 0; i < 5; ++i) {
std::cout << ptr[i] << " ";
}
//-> 0 0 0 3 4
std::cout << std::endl;
free(ptr);
}
}
return 0;
}
程序终止
exit()立即终止程序的执行 会执行一些清理操作
#include <cstdlib>
#include <iostream>
int main() {
std::cout << "Before exit" << std::endl;
exit(0);//参数【退出状态】:0 通常表示正常退出,非 0 值表示异常退出
std::cout << "After exit (This line will not be executed)" << std::endl;
return 0;
}
_Exit() 不会执行任何清理操作
数值转换
atoi()将字符串转换为整数
#include <cstdlib>
#include <iostream>
int main() {
char str[] = "123";
int num = atoi(str);
std::cout << num << std::endl;
return 0;
}
atol() 长整数
atof() 浮点数
随机数生成
rand() 生成一个伪随机整数
srand() 生成一个随机整数种子
#include <cstdlib>
#include <iostream>
#include <ctime>
int main() {
srand(static_cast<unsigned int>(time(nullptr)));
//通过time(nullptr)获取当前时间的秒数,转换为unsigned int类型后作为srand()的参数
for (int i = 0; i < 5; ++i) {
std::cout << rand() << " ";
}
std::cout << std::endl;
return 0;
}
系统相关
system()
//举例:在Linux环境下
#include <cstdlib>
#include <iostream>
int main() {
int result = system("ls");//执行ls命令
std::cout << "System command return value: " << result << std::endl;
return 0;
}

浙公网安备 33010602011771号