<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 0std::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 2ptr = (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 4std::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;
}