入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2015-10-29 投稿人: 浏览次数:434

最近项目需要用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”自动分配了5个char长度的内存给strA[], 运行时”=abc”附加到strA[]最后, 造成strA[]数组越界。

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

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。