C 空间内存分配

简要的关于 c 的应用。

可以在 VOFA 中加入,简化代码调用体积。

c 分配空间

使用结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>

struct Data {
float *floatArray;
char *charArray;
};

int main() {
int n = 5; // 假设有5个浮点数和4个字符

struct Data *data = (struct Data *)calloc(1, sizeof(struct Data));
data->floatArray = (float *)calloc(n, sizeof(float));
data->charArray = (char *)calloc(4, sizeof(char));

// 现在你可以访问和操作data结构中的浮点数和字符数组了

// 释放内存
free(data->floatArray);
free(data->charArray);
free(data);

return 0;
}

拼接不同类型空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>

int main() {
int n1 = 3;
int n2 = 4;

// 分配第一个数组(整数数组)
int *intArray = (int *)calloc(n1, sizeof(int));
for (int i = 0; i < n1; i++) {
intArray[i] = i + 1;
}

// 分配第二个数组(浮点数数组)
float *floatArray = (float *)calloc(n2, sizeof(float));
for (int i = 0; i < n2; i++) {
floatArray[i] = i + 0.5;
}

// 创建一个新的数组,将intArray和floatArray拼接起来
int totalSize = n1 + n2;
void *combinedArray = malloc((n1 * sizeof(int)) + (n2 * sizeof(float)));

// 将intArray和floatArray的内容拷贝到combinedArray
memcpy(combinedArray, intArray, n1 * sizeof(int));
memcpy((char *)combinedArray + n1 * sizeof(int), floatArray, n2 * sizeof(float));

// 现在combinedArray包含了intArray和floatArray的元素

// 释放内存
free(intArray);
free(floatArray);
free(combinedArray);

return 0;
}

动态创建二维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>

int main() {
int rows = 3;
int cols = 4;

// 分配二维数组
int **array2D = (int **)calloc(rows, sizeof(int *));
for (int i = 0; i < rows; i++) {
array2D[i] = (int *)calloc(cols, sizeof(int));
}

// 现在你可以使用array2D作为一个3x4的二维数组来存储和访问数据

// 释放内存
for (int i = 0; i < rows; i++) {
free(array2D[i]);
}
free(array2D);

return 0;
}

动态字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
char *str = (char *)malloc(6 * sizeof(char)); // 分配初始内存空间
strcpy(str, "Hello");

// 扩展字符串
str = (char *)realloc(str, 11 * sizeof(char)); // 重新分配内存
strcat(str, " World");

printf("%s\n", str); // 输出 "Hello World"

// 释放内存
free(str);

return 0;
}

C 空间内存分配
https://cofallen.github.io/2024/07/14/build-page-by-hexo/
作者
cofallen
发布于
2024年7月14日
更新于
2024年7月16日
许可协议