[原]Java字符串的内存分配--从C语言字符串操作说起

来源:互联网 发布:诚龙网络克隆教程 编辑:程序博客网 时间:2024/05/16 23:57

最近项目需要用C语言完成字符串操作。
我多年没碰C了,脑海中直接浮现出大一时学的strcat(source, dest), 于是写了第一个版本, 运行时报错:

#include <string.h>#include <stdio.h>int main(){    char strA[]="USER";        // 应改为 strA[100]="USER";显示指定数组大小,但仍有超出的风险    puts(strcat(strA,"=abc")); // 运行时报错 Thread 1: signal SIGABRT    return 0}

原来strcat()函数把dest appends到source字符数组的最后。这里strA[]初始化时没有指明字符数组大小, 系统根据”USER\0”自动分配了5个char长度的内存给strA[], 运行时”=abc”附加到strA[]最后, 造成strA[]数组越界。

到这里,不禁想研究Java中是怎么给字符串分配内存的。

0 0