new he malloc
时间: 2023-10-17 07:06:14 浏览: 106
`new` 和 `malloc` 都是用于在程序运行时动态地分配内存的操作符。它们的主要区别在于 `new` 是 C++ 中的操作符,而 `malloc` 是 C 语言中的库函数。使用 `new` 可以直接创建对象并返回指向该对象的指针,而 `malloc` 只能返回一个 void 类型的指针,需要进行类型转换后才能使用。
此外,`new` 会自动调用对象的构造函数,而 `malloc` 不会。因此,如果需要创建一个对象,应该使用 `new`,而不是 `malloc`,否则对象的构造函数将不会被调用,可能导致未定义的行为。
相关问题
用c写一个hashe map
我可以为你编写一段示例代码,以供参考:```
#include <stdio.h>
#include <stdlib.h>// 定义一个hash map结构
typedef struct hashmap {
int key;
int value;
struct hashmap *next;
} hashmap;// 初始化一个hash map
hashmap *hashmap_init(){
hashmap *map = (hashmap *)malloc(sizeof(hashmap));
if(map == NULL) {
return NULL;
}
map->key = 0;
map->value = 0;
map->next = NULL;
return map;
}// 向hash map中添加新的键值对
int hashmap_put(hashmap *map, int key, int value) {
hashmap *tmp = map;
while(tmp->next != NULL){
tmp = tmp->next;
}
hashmap *new_node = (hashmap *)malloc(sizeof(hashmap));
new_node->key = key;
new_node->value = value;
new_node->next = NULL;
tmp->next = new_node;
return 0;
}// 从hash map中获取特定key的value
int hashmap_get(hashmap *map, int key) {
hashmap *tmp = map;
while(tmp != NULL){
if(tmp->key == key){
return tmp->value;
}
tmp = tmp->next;
}
return -1;
}int main(){
hashmap *map = hashmap_init();
hashmap_put(map, 1, 10);
hashmap_put(map, 2, 20);
hashmap_put(map, 3, 30); int value = hashmap_get(map, 2);
printf("value of key 2 is %d\n", value);
return 0;
}
```
阅读全文